<?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>5971</bug_id>
          
          <creation_ts>2005-12-06 04:03:02 -0800</creation_ts>
          <short_desc>svg content doesn&apos;t work in &lt;image&gt; &lt;img&gt; or &lt;feImage&gt; tags</short_desc>
          <delta_ts>2008-03-18 16:55:22 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>SVGHitList</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>11990</dependson>
          <blocked>5392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>bugzilla</cc>
    
    <cc>hyatt</cc>
    
    <cc>ian</cc>
    
    <cc>jay</cc>
    
    <cc>mjs</cc>
    
    <cc>nickshanks</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25619</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-06 04:03:02 -0800</bug_when>
    <thetext>svg content doesn&apos;t work in &lt;image&gt; &lt;img&gt; or &lt;feImage&gt; tags

This is a very important bug.  Basically WebCoreImageRenderer needs to be taught how to load an 
arbitrary xml document, turn off certain features (javascript?) and then render it to a pixmap.  It also 
needs to be smart enough to listen to document changes and re-render the pixmap, invalidating all clients 
of that image.

Although the spec does not say so, this should be implemented for any arbitrary document (xhtml too), 
since at least &lt;foreignObject&gt; tags will have to work in this context.  Basically there should be some sort 
of drawRenderObjectToPixmap() call.  &lt;pattern&gt; could also take advantage of such a call.  As could 
&lt;cursor&gt; and many other places in the SVG code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30168</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-26 14:59:20 -0800</bug_when>
    <thetext>In my view this will be the primary use of SVG throughout the web.  We cannot ship SVG w/o this feature.  Adding SVGHitList keyword and bumping to P2.

In order to fix this would require pulling WebCoreImageRenderer down into WebCore from WebKit, and then wiring in support for SVG images into the renderer and possibly adding a CachedDocument class, or some other way of holding the cached SVG document data.

This will also require disabling JavaScript for that particular SVG, as well as possibly disabling SVG animations and interaction depending on the context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30169</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-26 15:00:32 -0800</bug_when>
    <thetext>Agreed that this is a killer feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30170</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-26 15:02:29 -0800</bug_when>
    <thetext>I don&apos;t know that you&apos;d have to disable Javascript.  I talked with Hixie about this and some principles we agreed on were:

(1) No interactivity, i.e., you can&apos;t get to the subdocument from the parent, and you can&apos;t hit test on anything.  It&apos;s just a single atomic image as far as the page is concerned.
(2) Animation should be fine, and there&apos;s no reason to preclude JS from being the way that animation might be done.
(3) The document has to be sandboxed.  No connection would exist between this document and the rest of the loaded pages.  It couldn&apos;t target other frames for example or get to any other frames/pages/documents.

Adding ian to cc list.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46542</commentid>
    <comment_count>4</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-21 05:44:07 -0700</bug_when>
    <thetext>Until this is implemented can you please add image/svg+xml;q=0 to the accept list sent when retrieving source documents of &lt;img&gt; tags and the others. Safari prefers the SVG images over PNG at the moment as they&apos;re sometimes smaller and will likely have higher qs values too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52593</commentid>
    <comment_count>5</comment_count>
      <attachid>10034</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-08-14 21:52:47 -0700</bug_when>
    <thetext>Created attachment 10034
My first hack-and-slash architecture exploration (for hyatt and others to look at)

I wonder if I even dare try and list all the problems with this patch.

The purpose is to let hyatt and others look at this, and promote intelligent discussion about what sort of architecture re-workings will be necessary to make SVG content work where bitmap images work today (&lt;img&gt;, background-image, etc.).

To do this, I made &apos;Image&apos; an abstract class, breaking logic out into BitmapImage and PDFDocumentImage.  I also added a &apos;SVGImage&apos; subclass of Image.

However, there are issues:

Right now RenderImage is not wired up to allow the Image object to effect the size calculation.  This will have to change for this to work.  (Right now for percentage-sized &lt;svg&gt;s the code just assumes a 1000x1000 viewport and sizes the SVG canvas accordingly.)

Also I&apos;m wondering if RenderImage is the right Renderer to use here at all.  I&apos;m having to fake a bunch of stuff that RenderFrame normally would do.  Perhaps &lt;img&gt;, etc should just use a RenderFrame when the Image is an SVG and set a RenderFrame::pretendToBeAnImage flag.  I&apos;m not sure how background-image works, we may end up needing a hacked up SVGImage anyway.

If we go with the SVGImage route, we&apos;ll have to teach WebCore how to make Page/FrameView/Frame stacks w/o needing to use WebKit to store the view size.  (The FrameView thinks its content is 0x0.  I believe that is why the background color is not correctly drawn.)

Comments are encouraged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52594</commentid>
    <comment_count>6</comment_count>
      <attachid>10035</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-08-14 21:54:43 -0700</bug_when>
    <thetext>Created attachment 10035
image showing my hack-and-slash demo patch in action</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56285</commentid>
    <comment_count>7</comment_count>
      <attachid>10719</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-23 02:53:40 -0700</bug_when>
    <thetext>Created attachment 10719
An updated version of my original hack-and-slash patch

This patch actually compiles (and sorta works!) on TOT.  I&apos;ve added it to the bug to give hyatt and I another launching point for discussions.  I still don&apos;t like the frameAtIndex() architecture, nor do I like how many virtual methods I had to add to Image/BitmapImage to make this all work.

SVGImages aren&apos;t sized correctly (hyatt and I talked about ways to do this before, we need to talk again), and I&apos;m not even sure if PDF images still work (I didn&apos;t test).  Patterned images for both PDF and SVG do not work (mostly due to the frameAtIndex() architectural problems).

Please don&apos;t re-write all of Image out from under me again. ;(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56286</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-23 02:54:01 -0700</bug_when>
    <thetext>Adding hyatt so he can see my new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56287</commentid>
    <comment_count>9</comment_count>
      <attachid>10720</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-23 03:03:02 -0700</bug_when>
    <thetext>Created attachment 10720
Updated version of my original hack-and-slash patch (now with all the files)

Hyatt:
One thing I should note, I removed these lines of code:
 void Image::invalidatePlatformData()
 {
-    if (m_frames.size() != 1)
-        return;
-
which seemed completely bogus (at best, a cause of leaks).  Perhaps you can explain to me why they were needed/wanted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56291</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-09-23 08:20:54 -0700</bug_when>
    <thetext>While image frames after the first load, there&apos;s no need to invalidate the NSImage or the TIFFRep of frame 0.  So when invalidateData is being called while loading, the code is correct. 

However, you&apos;re right that the code ends up being incorrect when invoked from the Image destructor.  I think you&apos;re right that the simplest fix is to just yank the guard.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39340</commentid>
    <comment_count>11</comment_count>
      <attachid>12075</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-27 22:02:11 -0800</bug_when>
    <thetext>Created attachment 12075
Another functional SVGImage patch

Woh.  This one has some serious hacks in it.  No, we could never land this.  But, it does demonstrate some architectural issues that will need to be considered if we&apos;re ever going to get SVGImage to work for real.  SVGImage needs to be passed a Page object.  SVGImages are created from a CachedImage, which although it is passed a docLoader in its constructor, does not hold onto that pointer, and thus has no way to tell SVGImage what the current page is.  I&apos;m not even sure if we would want SVGImages to use the current page.  Using their own custom page object (like this patch does) is really really really ugly, and likely won&apos;t work long-term.

At least hyatt and othermaciej should take a peak at this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39293</commentid>
    <comment_count>12</comment_count>
      <attachid>12076</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-27 23:11:11 -0800</bug_when>
    <thetext>Created attachment 12076
An updated hack, with better memory management (just code see old patch for tests)

So I looked a little bit at ways to avoid having SVGImage create its own Page.  Unfortunately I don&apos;t see any way to make that work inside SVGImage.

CachedImage objects are not tied to a page or a frame.  Image objects, are thus not tied to either.  Even if they were, passing the Page into the image and creating a frame for it would change the mainFrame on the page, unless we were also to pass an ownerElement to the Frame constructor.  We have no such element inside SVGImage unless we also manage to pass down the HTMLImageElement (or SVGImageElement) down, but that doesn&apos;t necessarily work for background images or filters, so that&apos;s a no go.

Another thought would be to teach the caching system to abort any CachedImage load when it sees it trying to load image/svg+xml, and instead do a requestObject load like embed/object do, or somehow &quot;half load&quot; the image inside SVGImage, and then have something outside (like HTMLImageElement) know how to finish the load.  That also doesn&apos;t sound optimal, given the fact that images should be usable from backgrounds, filters, etc without lots of extra code.

Another possibility is to ignore the Frame/FrameView/Page setup entirely and just directly create an SVGDocument, decode the data stream with our own Decoder, and create our own parser, etc.  The problem I forsee with that is that things in Document (and the DOM tree) likely expect to have a Frame.    I&apos;m not certain of that requirement however.  It would be a substantial amount of work to find out how required Frame objects are though.  (Unless hyatt, darin, mjs care to comment on this possibility.)

So that leads us back to creating or own Page/Frame/FrameView stack.  The problem here has become much harder since I initial started on this bug.   WebCore is now very very tied into WebKit.  Page and Frame classes now depend on being passed client objects and crash when they don&apos;t exist.  So to make this patch work, I created (really ugly!) dummy objects, which are completely empty.  This solution could work, except that it&apos;s likely to be very brittle.  I can forsee a solution like this breaking the build constantly any time someone wished to change a client.

I&apos;m interested to hear your thoughts.  The attached patch is actually quite stable (as far as I&apos;ve seen) and doesn&apos;t leak (any more than the dummy objects which are allocated once).  The code is a bit ugly, with all the dummy client classes embedded inside SVGImage.cpp.

If this hack wasn&apos;t so brittle, I would actually seriously propose it for landing.

I&apos;m very hesitant to start rounding out the corners of this patch by solving things like tiling, size negotiation, etc.  Those should all be pretty easy and quick once a simple architecturally-sound skeleton is landed.  Until then, I think solving the smaller issues is just wasting my time as this patch will just rot until a way can be found to wire this into the loading architecture for real.

I&apos;m interested to hear your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39271</commentid>
    <comment_count>13</comment_count>
      <attachid>12077</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-27 23:26:44 -0800</bug_when>
    <thetext>Created attachment 12077
A slightly prettier version

So this is yes, still very much a hack.  But it does work, and looks a lot nicer with the stubs moved out into a separate file.  I&apos;m going to mark this for review and hopefully receive some insightful suggestions as to a better way to do this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39265</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-27 23:33:22 -0800</bug_when>
    <thetext>Another possibly less hacky way to do this would be to add a call in WebKit (and a static method on Page) which wired up a &quot;dummy&quot; Page-&gt;Frame-&gt;FrameView system for the SVGImage to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39098</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-12-28 20:31:32 -0800</bug_when>
    <thetext>The empty client thing actually doesn&apos;t bother me so much.  Brady, Eric and I talked on IRC about the idea of having the empty clients be a more general concept, e.g., so that you can have a more lightweight Frame/Page/FrameView stack that isn&apos;t concerned with the client functionality.

I am comfortable with this idea, since I think other features will need this same capability.  For example, XBL subresource documents could fit into this model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39099</commentid>
    <comment_count>16</comment_count>
      <attachid>12077</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-12-28 20:40:15 -0800</bug_when>
    <thetext>Comment on attachment 12077
A slightly prettier version

I am giving this a +, even with the empty client hack.  These can always be moved later for a more general purpose solution without too much trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39075</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-29 01:01:40 -0800</bug_when>
    <thetext>Finally.

Lots left to be done here.  &lt;image&gt; and &lt;feImage&gt; need support for fragment urls (should be a couple hours work).  SVGImage does not yet know how to tile (thus it does not work as a background image or border-image).  Image does not have a way for SVGImage to negotiate size with the caller, until that&apos;s made available, SVGImages won&apos;t scale properly.

Also, the architecture needs to be cleaned up.  All the SVGEmpty*Clients are really ugly.

But it&apos;s landed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57314</commentid>
    <comment_count>18</comment_count>
    <who name="jay">jay</who>
    <bug_when>2007-09-29 01:18:14 -0700</bug_when>
    <thetext> is this fixed, but disabled on trunk?

I&apos;d like to use and publicise this feature, particularly if it works for html emails....

if landed, where is it?

cheers MacDome ~:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57316</commentid>
    <comment_count>19</comment_count>
    <who name="jay">jay</who>
    <bug_when>2007-09-29 01:19:42 -0700</bug_when>
    <thetext>*** Bug 15314 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57330</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-29 06:55:30 -0700</bug_when>
    <thetext>It was implemented, and then got turned off again in an effort to stabilize for leopard. I believe there is a bug about turning it on again.  I&apos;m not even sure it is turned on in feature-branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57419</commentid>
    <comment_count>21</comment_count>
    <who name="jay">jay</who>
    <bug_when>2007-09-30 00:40:02 -0700</bug_when>
    <thetext>Not working in either the trunk or feature-build nightlies for 30/09/07</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74342</commentid>
    <comment_count>22</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-03-18 16:17:42 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; It was implemented, and then got turned off again in an effort to stabilize for
&gt; leopard. I believe there is a bug about turning it on again.  I&apos;m not even sure
&gt; it is turned on in feature-branch.
&gt; 

Is it turned on again? This document http://docs.info.apple.com/article.html?artnum=307467 advertises tah SVG works now for img elements and also as CSS images (background-image?) but my quick test fails on this subject:

http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cp%20style%3D%22background-image%3A%20url(http%3A%2F%2Ffiles.myopera.com%2Fdstorey%2Fexperiments%2Fimages%2Froundedcorners.svg)%3B%22%3Etest%3C%2Fp%3E%0A%3Cp%3E%20%3Cimg%20src%3D%22http%3A%2F%2Ffiles.myopera.com%2Fdstorey%2Fexperiments%2Fimages%2Froundedcorners.svg%22%3E%3C%2Fp%3E</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74358</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-18 16:55:22 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Is it turned on again? This document
&gt; http://docs.info.apple.com/article.html?artnum=307467 advertises tah SVG works
&gt; now for img elements and also as CSS images (background-image?) but my quick
&gt; test fails on this subject:
&gt; 
&gt; http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cp%20style%3D%22background-image%3A%20url(http%3A%2F%2Ffiles.myopera.com%2Fdstorey%2Fexperiments%2Fimages%2Froundedcorners.svg)%3B%22%3Etest%3C%2Fp%3E%0A%3Cp%3E%20%3Cimg%20src%3D%22http%3A%2F%2Ffiles.myopera.com%2Fdstorey%2Fexperiments%2Fimages%2Froundedcorners.svg%22%3E%3C%2Fp%3E
&gt; 

Yes SVG images work as backgrounds, but *only* when they have an explicit width and height set on the &lt;svg&gt; element.

http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cp%20style%3D%22background-image%3A%20url(http%3A%2F%2Fcroczilla.com%2Fsvg%2Fsamples%2Fchem1%2Fchem1.svg)%3B%22%3Etest%3C%2Fp%3E%0A%3Cp%3E%20%3Cimg%20width%3D%22100px%22%20height%3D%22100px%22%20src%3D%22http%3A%2F%2Fcroczilla.com%2Fsvg%2Fsamples%2Fchem1%2Fchem1.svg%22%3E%3C%2Fp%3E

works.  Note, that you&apos;re also hitting: http://bugs.webkit.org/show_bug.cgi?id=17552</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10034</attachid>
            <date>2006-08-14 21:52:47 -0700</date>
            <delta_ts>2006-09-23 02:53:40 -0700</delta_ts>
            <desc>My first hack-and-slash architecture exploration (for hyatt and others to look at)</desc>
            <filename>svgimage.patch</filename>
            <type>text/plain</type>
            <size>72139</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODY3KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNyAr
MjU5LDcgQEAKIAkJNjU4MkExNTgwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UG9pbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0QTA5
OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLzsgfTsKIAkJNjU4MkExNTkwOTk5
OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTRCMDk5OTlENkMwMEJFRUI2RCAvKiBGbG9hdFJl
Y3RNYWMubW0gKi87IH07CiAJCTY1ODJBMTVBMDk5OTlENkQwMEJFRUI2RCAvKiBGbG9hdFNpemVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgy
QTE0QzA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRTaXplTWFjLm1tICovOyB9OwotCQk2NTgyQTE1
QjA5OTk5RDZEMDBCRUVCNkQgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0RDA5OTk5RDZDMDBCRUVCNkQgLyogSW1hZ2VN
YWMubW0gKi87IH07CisJCTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJB
MTREMDk5OTlENkMwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1hYy5tbSAqLzsgfTsKIAkJNjU4MkEx
NUMwOTk5OUQ2RDAwQkVFQjZEIC8qIEltYWdlU291cmNlTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTRFMDk5OTlENkQwMEJFRUI2RCAv
KiBJbWFnZVNvdXJjZU1hYy5jcHAgKi87IH07CiAJCTY1ODJBMTVEMDk5OTlENkQwMEJFRUI2RCAv
KiBJbnRQb2ludE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1ODJBMTRGMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRQb2ludE1hYy5tbSAqLzsgfTsK
IAkJNjU4MkExNUUwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFJlY3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE1MDA5OTk5RDZEMDBCRUVC
NkQgLyogSW50UmVjdE1hYy5tbSAqLzsgfTsKQEAgLTkyNSw2ICs5MjUsMTAgQEAKIAkJQTg3MURG
RTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODcxREZERjBBMTUzNzZCMDBCMTJBNjggLyog
UmVuZGVyUmVwbGFjZWQuaCAqLzsgfTsKIAkJQTg3MURGRTQwQTE1Mzc2QjAwQjEyQTY4IC8qIFJl
bmRlcldpZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oICovOyB9OwogCQlB
ODcxREZFNTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzFERkUxMEExNTM3NkIwMEIxMkE2
OCAvKiBSZW5kZXJXaWRnZXQuY3BwICovOyB9OworCQlBODgxMkVFNzBBOEU0NzIxMDBCNDZDMTMg
LyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4ODEyRUU1MEE4RTQ3MjEwMEI0NkMxMyAvKiBTVkdJbWFnZS5oICovOyB9OworCQlBODgx
MkVFODBBOEU0NzIxMDBCNDZDMTMgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4MTJFRTYwQThFNDcyMTAwQjQ2QzEzIC8qIFNW
R0ltYWdlLmNwcCAqLzsgfTsKKwkJQTg4MTJGRjAwQThFNTAwNzAwQjQ2QzEzIC8qIEJpdG1hcElt
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
ODEyRkVFMEE4RTUwMDcwMEI0NkMxMyAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CisJCUE4ODEy
RkYxMEE4RTUwMDcwMEI0NkMxMyAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4MTJGRUYwQThFNTAwNzAwQjQ2QzEzIC8qIEJp
dG1hcEltYWdlLmggKi87IH07CiAJCUE4OEFEMzg2MDk1MjQ4NkQwMDFERDE5NiAvKiBLUmVuZGVy
aW5nRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QzBGQjU0MDg5NzAxRjcwMEJBNTExNCAvKiBLUmVuZGVyaW5nRGV2aWNlLmNwcCAqLzsg
fTsKIAkJQTg4QUQzODcwOTUyNDg2RDAwMUREMTk2IC8qIEtSZW5kZXJpbmdEZXZpY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQjU1MDg5NzAx
RjcwMEJBNTExNCAvKiBLUmVuZGVyaW5nRGV2aWNlLmggKi87IH07CiAJCUE4OEFEMzg4MDk1MjQ4
NkQwMDFERDE5NiAvKiBLUmVuZGVyaW5nRmlsbFBhaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZCNTkwODk3MDFGNzAwQkE1MTE0IC8q
IEtSZW5kZXJpbmdGaWxsUGFpbnRlci5jcHAgKi87IH07CkBAIC0xOTQyLDcgKzE5NDYsNyBAQAog
CQk2NTgyQTE0QTA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0QjA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRS
ZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0
UmVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4MkExNEMwOTk5OUQ2
QzAwQkVFQjZEIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGbG9hdFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTY1ODJBMTREMDk5OTlENkMwMEJFRUI2RCAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjU4MkExNEQwOTk5OUQ2QzAwQkVFQjZEIC8qIEJpdG1hcEltYWdlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJpdG1hcEltYWdl
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0RTA5OTk5RDZEMDBC
RUVCNkQgLyogSW1hZ2VTb3VyY2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlU291cmNlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU4MkExNEYwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFBvaW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFBvaW50TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE1MDA5OTk5RDZEMDBCRUVCNkQgLyogSW50UmVjdE1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnRSZWN0TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY4Miw2ICsyNjg2LDEwIEBACiAJ
CUE4NzFERkRGMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUmVwbGFjZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyV2lkZ2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5k
ZXJXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
cldpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4ODEyRUU1MEE4RTQ3
MjEwMEI0NkMxMyAvKiBTVkdJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgxMkVFNjBBOEU0
NzIxMDBCNDZDMTMgLyogU1ZHSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgx
MkZFRTBBOEU1MDA3MDBCNDZDMTMgLyogQml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBODgxMkZFRjBBOEU1MDA3MDBCNDZDMTMgLyogQml0bWFwSW1hZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTg4NDI4M0QwOTMwOEMxQzAwQjZENDYxIC8qIERPTUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBwYXRoID0gRE9NTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJQTg5MERGMUIwOTMwOTc0ODAwNTEzRjg4IC8qIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4OTBERjFDMDkzMDk3NDgwMDUx
M0Y4OCAvKiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CkBAIC0zODQ5LDcgKzM4NTcsNyBAQAogCQkJCTkzNUM0NzZDMDlBQzRE
NjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmggKi8sCiAJCQkJQkM2REI0RDMwQTFBRkVF
RjAwRTVDRDE0IC8qIEdseXBoTWFwTWFjLmNwcCAqLywKIAkJCQk5MzUzNjdFODA5QUY3N0VGMDBE
MzVDRDYgLyogR3JhcGhpY3NDb250ZXh0TWFjLm1tICovLAotCQkJCTY1ODJBMTREMDk5OTlENkMw
MEJFRUI2RCAvKiBJbWFnZU1hYy5tbSAqLywKKwkJCQk2NTgyQTE0RDA5OTk5RDZDMDBCRUVCNkQg
LyogQml0bWFwSW1hZ2VNYWMubW0gKi8sCiAJCQkJNjU4MkExNEUwOTk5OUQ2RDAwQkVFQjZEIC8q
IEltYWdlU291cmNlTWFjLmNwcCAqLywKIAkJCQk2NTgyQTE0RjA5OTk5RDZEMDBCRUVCNkQgLyog
SW50UG9pbnRNYWMubW0gKi8sCiAJCQkJNjU4MkExNTAwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFJl
Y3RNYWMubW0gKi8sCkBAIC01MDY0LDggKzUwNzIsNiBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5MDA2
MUExMjMgLyogcGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTkzMDMyQ0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAqLywKLQkJCQk2NTgyQTE0
ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovLAogCQkJCUE4NUQ3QThDMDg3OUVDNjQwMDZBOTE3
MiAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICovLAogCQkJCUE4NUQ3QThEMDg3OUVDNjQwMDZBOTE3
MiAvKiBBZmZpbmVUcmFuc2Zvcm0uaCAqLywKIAkJCQlCQ0ZCMkY3NDA5N0EyRTFBMDBCQTcwM0Qg
LyogQXJlbmEuY3BwICovLApAQCAtNTA3NSw2ICs1MDgxLDkgQEAKIAkJCQk5M0NENEZENzA5OTVG
OUVBMDA3RUNDOTcgLyogQXRvbWljU3RyaW5nLmNwcCAqLywKIAkJCQk5M0NENEZEODA5OTVGOUVB
MDA3RUNDOTcgLyogQXRvbWljU3RyaW5nLmggKi8sCiAJCQkJOTNDRDRGRDkwOTk1RjlFQTAwN0VD
Qzk3IC8qIEF0b21pY1N0cmluZ0ltcGwuaCAqLywKKwkJCQlBODgxMkZFRTBBOEU1MDA3MDBCNDZD
MTMgLyogQml0bWFwSW1hZ2UuY3BwICovLAorCQkJCUE4ODEyRkVGMEE4RTUwMDcwMEI0NkMxMyAv
KiBCaXRtYXBJbWFnZS5oICovLAorCQkJCTkzMDMyQ0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAq
LywKIAkJCQk2NUY1MzgyMDA5QjJCNTU3MDBGM0RDNEEgLyogY2hhcmFjdGVyLXNldHMudHh0ICov
LAogCQkJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0NyAvKiBDaGFyc2V0RGF0YS5oICovLAogCQkJ
CTY1RjUzODZBMDlCMkMwNUUwMEYzREM0QSAvKiBDaGFyc2V0TmFtZXMuY3BwICovLApAQCAtNTE0
MCw2ICs1MTQ5LDcgQEAKIAkJCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovLAogCQkJCUE4MjM5REZFMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNw
cCAqLywKIAkJCQlBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oICovLAorCQkJ
CTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8sCiAJCQkJNjVGNTM4MjEwOUIyQjU1
NzAwRjNEQzRBIC8qIG1ha2UtY2hhcnNldC10YWJsZS5wbCAqLywKIAkJCQk5MzAzMkNDOTA5QUVD
MzRCMDBGODJBMTggLyogUGF0aC5oICovLAogCQkJCUJDQzhEMTcxMDk4ODMwMTIwMDE0MEJGMiAv
KiBQZW4uY3BwICovLApAQCAtNTE3OCw2ICs1MTg4LDggQEAKIAkJCQk5MzEyNkY2MDA5RDdBNzM2
MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5oICovLAogCQkJCTkzQ0Q0RkRDMDk5NUY5RUEwMDdFQ0M5
NyAvKiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQk5M0NENEZERDA5OTVGOUVBMDA3RUNDOTcgLyog
U3RyaW5nSW1wbC5oICovLAorCQkJCUE4ODEyRUU2MEE4RTQ3MjEwMEI0NkMxMyAvKiBTVkdJbWFn
ZS5jcHAgKi8sCisJCQkJQTg4MTJFRTUwQThFNDcyMTAwQjQ2QzEzIC8qIFNWR0ltYWdlLmggKi8s
CiAJCQkJOTNFNjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8qIFN5c3RlbVRpbWUuaCAqLywKIAkJCQk5
MzUyMDcxODA5QkQzQkE1MDBGMjAzOEQgLyogVGV4dEJvdW5kYXJpZXMuaCAqLywKIAkJCQlGNTg3
ODZCRTAyREUzQjg2MDFFQTQxMjIgLyogVGV4dEJveC5oICovLApAQCAtNjQxNyw2ICs2NDI5LDgg
QEAKIAkJCQkxQUI3RkM4NDBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhVdGlsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUI3RkM4NjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCN0ZDODgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVmFyaWFibGVS
ZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4ODEyRUU3MEE4RTQ3MjEwMEI0NkMxMyAv
KiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg4MTJGRjEwQThFNTAwNzAwQjQ2QzEz
IC8qIEJpdG1hcEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFMDBBOEQxODgxMDAy
Mjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0U4MEE4RDE4
RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0VCMEE4
RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY0NTYs
NyArNjQ3MCw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJY
Y29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lv
bnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTY0NzEsNyArNjQ4NCw2IEBACiAJCQlwcm9kdWN0UmVm
R3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9q
ZWN0RGlyUGF0aCA9ICIiOwogCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXNob3VsZENoZWNrQ29t
cGF0aWJpbGl0eSA9IDE7CiAJCQl0YXJnZXRzID0gKAogCQkJCTkzRjE5OEE1MDgyNDVFNTkwMDFF
OUFCQyAvKiBXZWJDb3JlICovLAogCQkJCUREMDQxRkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8sCkBAIC02ODg4LDcgKzY5MDAsNyBAQAogCQkJCTY1ODJBMTU4MDk5OTlE
NkQwMEJFRUI2RCAvKiBGbG9hdFBvaW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkEx
NTkwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTY1ODJBMTVBMDk5OTlENkQwMEJFRUI2RCAvKiBGbG9hdFNpemVNYWMubW0gaW4gU291cmNlcyAq
LywKLQkJCQk2NTgyQTE1QjA5OTk5RDZEMDBCRUVCNkQgLyogSW1hZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk2NTgyQTE1QjA5OTk5RDZEMDBCRUVCNkQgLyogQml0bWFwSW1hZ2VNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk2NTgyQTE1QzA5OTk5RDZEMDBCRUVCNkQgLyogSW1hZ2VTb3Vy
Y2VNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNUQwOTk5OUQ2RDAwQkVFQjZEIC8q
IEludFBvaW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNUUwOTk5OUQ2RDAwQkVF
QjZEIC8qIEludFJlY3RNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTcyOTMsNiArNzMwNSw4IEBA
CiAJCQkJMUFCN0ZDODMwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVXRpbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM4NTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUI3RkM4NzBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhWYXJpYWJs
ZVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODgxMkVFODBBOEU0NzIxMDBCNDZD
MTMgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTg4MTJGRjAwQThFNTAwNzAw
QjQ2QzEzIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0U1M0RGMEE4
RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNF
NTNFNzBBOEQxOEU3MDAyMjk0N0QgLyogRE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQ0U1M0VBMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvQ2FjaGUu
Y3BwCShyZXZpc2lvbiAxNTg2NykKKysrIGxvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJsb2FkZXIuaCIKIApAQCAtODUsNyArODUsNyBAQCB2b2lkIENhY2hlOjpp
bml0KCkKICAgICAgICAgZG9jbG9hZGVycyA9IG5ldyBIYXNoU2V0PERvY0xvYWRlcio+OwogCiAg
ICAgaWYgKCFudWxsSW1hZ2UpCi0gICAgICAgIG51bGxJbWFnZSA9IG5ldyBJbWFnZTsKKyAgICAg
ICAgbnVsbEltYWdlID0gbmV3IEJpdG1hcEltYWdlOwogCiAgICAgaWYgKCFicm9rZW5JbWFnZSkK
ICAgICAgICAgYnJva2VuSW1hZ2UgPSBJbWFnZTo6bG9hZFJlc291cmNlKCJtaXNzaW5nSW1hZ2Ui
KTsKSW5kZXg6IGxvYWRlci9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0Nh
Y2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTU4NjcpCisrKyBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMSArMzMsMjkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAj
aW5jbHVkZSAiRG9jTG9hZGVyLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogI2luY2x1ZGUgIkxvYWRlckZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlcXVl
c3QuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZmRlZiBfX0FQUExFX18KKyNpbmNs
dWRlICJQREZEb2N1bWVudEltYWdlLmgiCisjZW5kaWYKKworI2lmZGVmIFNWR19TVVBQT1JUCisj
aW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNlbmRpZgorCiB1c2luZyBzdGQ6Om1heDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBkbCwg
Y29uc3QgU3RyaW5nICZ1cmwsIENhY2hlUG9saWN5IGNhY2hlUG9saWN5LCB0aW1lX3QgX2V4cGly
ZURhdGUpCiAgICAgOiBDYWNoZWRSZXNvdXJjZSh1cmwsIEltYWdlUmVzb3VyY2UsIGNhY2hlUG9s
aWN5LCBfZXhwaXJlRGF0ZSkKKyAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fZGF0YVNpemUoMCkK
KyAgICAsIG1fZXJyb3JPY2N1cnJlZChmYWxzZSkKIHsKLSAgICBtX2ltYWdlID0gMDsKLSAgICBt
X2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAgICBtX3N0YXR1cyA9IFVua25vd247CiAgICAgbV9s
b2FkaW5nID0gdHJ1ZTsKIH0KQEAgLTExNCwxMiArMTIyLDE5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFyKCkKIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSgpCiB7CiAgICAg
Ly8gQ3JlYXRlIHRoZSBpbWFnZSBpZiBpdCBkb2Vzbid0IHlldCBleGlzdC4KLSAgICBpZiAoIW1f
aW1hZ2UpCi0jaWYgX19BUFBMRV9fCi0gICAgICAgIG1faW1hZ2UgPSBuZXcgSW1hZ2UodGhpcywg
UmVzcG9uc2VNSU1FVHlwZShtX3Jlc3BvbnNlKSA9PSAiYXBwbGljYXRpb24vcGRmIik7Ci0jZWxz
ZQotICAgICAgICBtX2ltYWdlID0gbmV3IEltYWdlKHRoaXMsIGZhbHNlKTsKKyAgICBpZiAoIW1f
aW1hZ2UpIHsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgaWYgKFJlc3BvbnNlTUlNRVR5cGUo
bV9yZXNwb25zZSkgPT0gImFwcGxpY2F0aW9uL3BkZiIpCisgICAgICAgICAgICBtX2ltYWdlID0g
bmV3IFBERkRvY3VtZW50SW1hZ2UodGhpcyk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorI2lmIFNW
R19TVVBQT1JUCisgICAgICAgICAgICBpZiAoUmVzcG9uc2VNSU1FVHlwZShtX3Jlc3BvbnNlKSA9
PSAiaW1hZ2Uvc3ZnK3htbCIpCisgICAgICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBTVkdJbWFn
ZSh0aGlzKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCisgICAgICAgICAgICBtX2ltYWdlID0gbmV3
IEJpdG1hcEltYWdlKHRoaXMpOworICAgIH0KIH0KIAogVmVjdG9yPGNoYXI+JiBDYWNoZWRJbWFn
ZTo6YnVmZmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGFkZGVkU2l6ZSwgUmVxdWVzdCog
cmVxdWVzdCkKSW5kZXg6IGxvYWRlci9pY29uL1NpdGVJY29uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs
b2FkZXIvaWNvbi9TaXRlSWNvbi5jcHAJKHJldmlzaW9uIDE1ODY3KQorKysgbG9hZGVyL2ljb24v
U2l0ZUljb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaXRlSWNvbjo6
U2l0ZUljb24oY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgOiBtX2ljb25VUkwodXJsKQpAQCAtODQs
NyArODQsNyBAQCB2b2lkIFNpdGVJY29uOjptYW51YWxseVNldEltYWdlRGF0YSh1bnNpCiAgICAg
Ly8gZXhwb3NlIHRoaXMgcmF3IGltYWdlIGRhdGEuCiAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAg
IGRlbGV0ZSBtX2ltYWdlOwotICAgIG1faW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAgICBtX2ltYWdl
ID0gbmV3IEJpdG1hcEltYWdlKCk7CiAKICAgICBpZiAoIW1faW1hZ2UtPnNldE5hdGl2ZURhdGEo
bmF0aXZlRGF0YSwgdHJ1ZSkpIHsKICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIk1hbnVhbCBp
bWFnZSBkYXRhIGZvciBpY29uVVJMICclcycgRkFJTEVEIiwgbV9pY29uVVJMLmFzY2lpKCkuZGF0
YSgpKTsKQEAgLTEwMyw1ICsxMDMsNiBAQCB0aW1lX3QgU2l0ZUljb246OmdldEV4cGlyYXRpb24o
KQogICAgIC8vIEZJWE1FIC0gUmV0dXJuIGV4cGlyYXRpb24gdGltZSBmcm9tIFNRTAogICAgIHJl
dHVybiBJTlRfTUFYOwogfQotICAgIAorCit9CiAKSW5kZXg6IHBhZ2UvUmVzb3VyY2VSZXF1ZXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGFnZS9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTU4Njcp
CisrKyBwYWdlL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IHsK
IAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKSA6IG1fbG9ja0hpc3RvcnkoZmFsc2UpLCByZWxv
YWQoZmFsc2UpLCBtX2RvUG9zdChmYWxzZSkgeyB9Ci0gICAgICAgIGV4cGxpY2l0IFJlc291cmNl
UmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIDogbV9sb2NrSGlzdG9yeShmYWxzZSksIHJlbG9hZChm
YWxzZSksIG1fdXJsKHVybCksIG1fZG9Qb3N0KGZhbHNlKSB7IH0KKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KCkKKyAgICAgICAgICAgIDogbV9sb2NrSGlzdG9yeShmYWxzZSkKKyAgICAgICAgICAg
ICwgcmVsb2FkKGZhbHNlKQorICAgICAgICAgICAgLCBtX2RvUG9zdChmYWxzZSkKKyAgICAgICAg
eyB9CisgICAgICAgIGV4cGxpY2l0IFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisg
ICAgICAgICAgICA6IG1fbG9ja0hpc3RvcnkoZmFsc2UpCisgICAgICAgICAgICAsIHJlbG9hZChm
YWxzZSkKKyAgICAgICAgICAgICwgbV91cmwodXJsKQorICAgICAgICAgICAgLCBtX2RvUG9zdChm
YWxzZSkKKyAgICAgICAgeyB9CiAKICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1f
dXJsID0gdXJsOyB9CkluZGV4OiBwbGF0Zm9ybS9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAxNTg0MSkKKysrIHBsYXRmb3Jt
L0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTA2ICsyNSwzMiBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIF9fQVBQTEVfXwotLy8gRklYTUU6IFdpbGwgZ28g
YXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJ
bWFnZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBJbWFnZSBDbGFzcwotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUltYWdl
OjpJbWFnZSgpCi06IG1fY3VycmVudEZyYW1lKDApLCBtX2ZyYW1lcygwKSwgbV9hbmltYXRpb25P
YnNlcnZlcigwKSwKLSAgbV9mcmFtZVRpbWVyKDApLCBtX3JlcGV0aXRpb25Db3VudCgwKSwgbV9y
ZXBldGl0aW9uc0NvbXBsZXRlKDApLAotICBtX2lzU29saWRDb2xvcihmYWxzZSksIG1fYW5pbWF0
aW5nSW1hZ2VUeXBlKHRydWUpLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKSwKLSAgbV9oYXZl
U2l6ZShmYWxzZSksIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKLXsKLSAgICBpbml0TmF0aXZlRGF0
YSgpOwotfQotCi1JbWFnZTo6SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogb2JzZXJ2ZXIs
IGJvb2wgaXNQREYpCi0gOiBtX2N1cnJlbnRGcmFtZSgwKSwgbV9mcmFtZXMoMCksIG1fYW5pbWF0
aW9uT2JzZXJ2ZXIoMCksCi0gIG1fZnJhbWVUaW1lcigwKSwgbV9yZXBldGl0aW9uQ291bnQoMCks
IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKSwKLSAgbV9pc1NvbGlkQ29sb3IoZmFsc2UpLCBtX2Fu
aW1hdGluZ0ltYWdlVHlwZSh0cnVlKSwgbV9hbmltYXRpb25GaW5pc2hlZChmYWxzZSksCi0gIG1f
aGF2ZVNpemUoZmFsc2UpLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi17Ci0gICAgaW5pdE5hdGl2
ZURhdGEoKTsKLSNpZiBfX0FQUExFX18KLSAgICBpZiAoaXNQREYpCi0gICAgICAgIHNldElzUERG
KCk7IC8vIEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNsYXNzLgot
I2VuZGlmCi0gICAgbV9hbmltYXRpb25PYnNlcnZlciA9IG9ic2VydmVyOwotfQotCi1JbWFnZTo6
fkltYWdlKCkKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVy
KiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9pc1NvbGlkQ29sb3Io
ZmFsc2UpCisgICAgLCBtX2hhdmVTaXplKGZhbHNlKQorICAgICwgbV9zaXplQXZhaWxhYmxlKGZh
bHNlKQorICAgICwgbV9hbmltYXRpbmdJbWFnZVR5cGUodHJ1ZSkKIHsKLSAgICBpbnZhbGlkYXRl
RGF0YSgpOwotICAgIHN0b3BBbmltYXRpb24oKTsKLSAgICBkZXN0cm95TmF0aXZlRGF0YSgpOwot
fQotCi12b2lkIEltYWdlOjppbnZhbGlkYXRlRGF0YSgpCi17Ci0gICAgLy8gRGVzdHJveSB0aGUg
Y2FjaGVkIGltYWdlcyBhbmQgcmVsZWFzZSB0aGVtLgotICAgIGlmIChtX2ZyYW1lcy5zaXplKCkp
IHsKLSAgICAgICAgbV9mcmFtZXMubGFzdCgpLmNsZWFyKCk7Ci0gICAgICAgIG1faXNTb2xpZENv
bG9yID0gZmFsc2U7Ci0gICAgICAgIGludmFsaWRhdGVOYXRpdmVEYXRhKCk7Ci0gICAgfQotfQot
Ci12b2lkIEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKLXsKLSAgICBzaXplX3QgbnVt
RnJhbWVzID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghbV9mcmFtZXMuc2l6ZSgpICYmIHNob3Vs
ZEFuaW1hdGUoKSkgeyAgICAgICAgICAgIAotICAgICAgICAvLyBTbmFnIHRoZSByZXBldGl0aW9u
IGNvdW50LgotICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IG1fc291cmNlLnJlcGV0aXRpb25D
b3VudCgpOwotICAgICAgICBpZiAobV9yZXBldGl0aW9uQ291bnQgPT0gY0FuaW1hdGlvbk5vbmUp
Ci0gICAgICAgICAgICBtX2FuaW1hdGluZ0ltYWdlVHlwZSA9IGZhbHNlOwotICAgIH0KLSAgICAK
LSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQotICAgICAgICBtX2ZyYW1lcy5y
ZXNpemUobnVtRnJhbWVzKTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3Vy
Y2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWUpCi0gICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotCi0gICAgaWYgKHNob3VsZEFu
aW1hdGUoKSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5m
cmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxw
aGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgSW1h
Z2U6OmlzTnVsbCgpIGNvbnN0CitCaXRtYXBJbWFnZTo6fkJpdG1hcEltYWdlKCkKIHsKLSAgICBy
ZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsKIH0KIAotSW50U2l6ZSBJbWFnZTo6c2l6ZSgpIGNvbnN0
Ci17Ci0jaWYgX19BUFBMRV9fCi0gICAgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1h
a2UgUERGIGEgc3ViY2xhc3MuCi0gICAgaWYgKG1faXNQREYpIHsKLSAgICAgICAgaWYgKG1fUERG
RG9jKSB7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2l6ZSA9IG1fUERGRG9jLT5zaXplKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gSW50U2l6ZSgoaW50KXNpemUud2lkdGgoKSwgKGludClzaXplLmhl
aWdodCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgCitJbnRTaXplIEJp
dG1hcEltYWdlOjpzaXplKCkgY29uc3QKK3sgICAgCiAgICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSAm
JiAhbV9oYXZlU2l6ZSkgewogICAgICAgICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7CiAgICAg
ICAgIG1faGF2ZVNpemUgPSB0cnVlOwpAQCAtMTMyLDQ1ICs1OCwxNiBAQCBJbnRTaXplIEltYWdl
OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zaXplOwogfQogCi1ib29sIEltYWdlOjpzZXRE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZURh
dGEoKQogewotICAgIGludCBsZW5ndGggPSBtX2RhdGEuc2l6ZSgpOwotICAgIGlmICghbGVuZ3Ro
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmZGVmIGtJbWFnZUJ5dGVzQ3V0b2ZmCi0gICAg
Ly8gVGhpcyBpcyBhIGhhY2sgdG8gaGVscCB3aXRoIHRlc3RpbmcgZGlzcGxheSBvZiBwYXJ0aWFs
bHktbG9hZGVkIGltYWdlcy4KLSAgICAvLyBUbyBlbmFibGUgaXQsIGRlZmluZSBrSW1hZ2VCeXRl
c0N1dG9mZiB0byBiZSBhIHNpemUgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGltYWdlIGZpbGVz
Ci0gICAgLy8gYmVpbmcgbG9hZGVkLiBUaGV5J2xsIG5ldmVyIGZpbmlzaCBsb2FkaW5nLgotICAg
IGlmIChsZW5ndGggPiBrSW1hZ2VCeXRlc0N1dG9mZikgewotICAgICAgICBsZW5ndGggPSBrSW1h
Z2VCeXRlc0N1dG9mZjsKLSAgICAgICAgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2U7Ci0gICAgfQot
I2VuZGlmCi0gICAgCi0jaWYgX19BUFBMRV9fCi0gICAgLy8gQXZvaWQgdGhlIGV4dHJhIGNvcHkg
b2YgYnl0ZXMgYnkganVzdCBoYW5kaW5nIHRoZSBieXRlIGFycmF5IGRpcmVjdGx5IHRvIGEgQ0ZE
YXRhUmVmLgotICAgIENGRGF0YVJlZiBkYXRhID0gQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihtX2RhdGEuZGF0YSgpKSwgbGVuZ3Ro
LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBib29sIHJlc3VsdCA9IHNldE5hdGl2ZURhdGEoZGF0
YSwgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBDRlJlbGVhc2UoZGF0YSk7Ci0jZWxzZQotICAgIGJv
b2wgcmVzdWx0ID0gc2V0TmF0aXZlRGF0YSgmbV9kYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIC8vIERlc3Ryb3kgdGhlIGNhY2hlZCBpbWFn
ZXMgYW5kIHJlbGVhc2UgdGhlbS4KKyAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKQorICAgICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOworICAgIEltYWdlOjppbnZhbGlkYXRlRGF0YSgpOwogfQog
Ci1ib29sIEltYWdlOjpzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCitib29sIEJpdG1hcEltYWdlOjpzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQ
dHIgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0jaWYgX19BUFBMRV9fCi0gICAgLy8g
RklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0gICAgaWYg
KG1faXNQREYpIHsKLSAgICAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCAmJiAhbV9QREZEb2MpCi0g
ICAgICAgICAgICBtX1BERkRvYyA9IG5ldyBQREZEb2N1bWVudEltYWdlKGRhdGEpOwotICAgICAg
ICByZXR1cm4gbV9QREZEb2M7Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbnZhbGlkYXRlRGF0YSgp
OwogICAgIAogICAgIC8vIEZlZWQgYWxsIHRoZSBkYXRhIHdlJ3ZlIHNlZW4gc28gZmFyIHRvIHRo
ZSBpbWFnZSBkZWNvZGVyLgpAQCAtMTgxLDEyOCArNzgsNDcgQEAgYm9vbCBJbWFnZTo6c2V0TmF0
aXZlRGF0YShOYXRpdmVCeXRlUHRyIAogICAgIHJldHVybiBpc1NpemVBdmFpbGFibGUoKTsKIH0K
IAotc2l6ZV90IEltYWdlOjpmcmFtZUNvdW50KCkKK3NpemVfdCBCaXRtYXBJbWFnZTo6ZnJhbWVD
b3VudCgpCiB7CiAgICAgcmV0dXJuIG1fc291cmNlLmZyYW1lQ291bnQoKTsKIH0KIAotYm9vbCBJ
bWFnZTo6aXNTaXplQXZhaWxhYmxlKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmlzU2l6ZUF2YWlsYWJs
ZSgpCiB7CiAgICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0K
KyAgICAKICAgICBtX3NpemVBdmFpbGFibGUgPSBtX3NvdXJjZS5pc1NpemVBdmFpbGFibGUoKTsK
LQorICAgIAogICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7Ci0KLX0KLQotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgY2FjaGVG
cmFtZShpbmRleCk7Ci0KLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Ci19Ci0K
LWZsb2F0IEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAg
aWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAg
ICAgICAgY2FjaGVGcmFtZShpbmRleCk7Ci0KLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
ZHVyYXRpb247Ci19Ci0KLWJvb2wgSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKLQotICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKLX0KLQotYm9vbCBJbWFnZTo6c2hvdWxkQW5pbWF0ZSgp
Ci17Ci0gICAgcmV0dXJuIChtX2FuaW1hdGluZ0ltYWdlVHlwZSAmJiBmcmFtZUNvdW50KCkgPiAx
ICYmICFtX2FuaW1hdGlvbkZpbmlzaGVkICYmIG1fYW5pbWF0aW9uT2JzZXJ2ZXIpOwotfQotCi12
b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fZnJhbWVUaW1lciB8fCAh
c2hvdWxkQW5pbWF0ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ZyYW1lVGltZXIgPSBu
ZXcgVGltZXI8SW1hZ2U+KHRoaXMsICZJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7Ci0gICAgbV9m
cmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZnJhbWVEdXJhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJh
bWUpKTsKLX0KLQotdm9pZCBJbWFnZTo6c3RvcEFuaW1hdGlvbigpCi17Ci0gICAgLy8gVGhpcyB0
aW1lciBpcyB1c2VkIHRvIGFuaW1hdGUgYWxsIG9jY3VycmVuY2VzIG9mIHRoaXMgaW1hZ2UuICBE
b24ndCBpbnZhbGlkYXRlCi0gICAgLy8gdGhlIHRpbWVyIHVubGVzcyBhbGwgcmVuZGVyZXJzIGhh
dmUgc3RvcHBlZCBkcmF3aW5nLgotICAgIGRlbGV0ZSBtX2ZyYW1lVGltZXI7Ci0gICAgbV9mcmFt
ZVRpbWVyID0gMDsKLX0KLQotdm9pZCBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQotewotICAgIHN0
b3BBbmltYXRpb24oKTsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IDA7Ci0gICAgbV9yZXBldGl0aW9u
c0NvbXBsZXRlID0gMDsKLSAgICBtX2FuaW1hdGlvbkZpbmlzaGVkID0gZmFsc2U7Ci19Ci0KLQot
dm9pZCBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbihUaW1lcjxJbWFnZT4qIHRpbWVyKQotewotICAg
IC8vIFN0b3AgdGhlIGFuaW1hdGlvbi4KLSAgICBzdG9wQW5pbWF0aW9uKCk7CiAgICAgCi0gICAg
Ly8gU2VlIGlmIGFueW9uZSBpcyBzdGlsbCBwYXlpbmcgYXR0ZW50aW9uIHRvIHRoaXMgYW5pbWF0
aW9uLiAgSWYgbm90LCB3ZSBkb24ndAotICAgIC8vIGFkdmFuY2UgYW5kIHdpbGwgc2ltcGx5IHBh
dXNlIHRoZSBhbmltYXRpb24uCi0gICAgaWYgKGFuaW1hdGlvbk9ic2VydmVyKCktPnNob3VsZFN0
b3BBbmltYXRpb24odGhpcykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY3VycmVudEZyYW1l
Kys7Ci0gICAgaWYgKG1fY3VycmVudEZyYW1lID49IGZyYW1lQ291bnQoKSkgewotICAgICAgICBt
X3JlcGV0aXRpb25zQ29tcGxldGUgKz0gMTsKLSAgICAgICAgaWYgKG1fcmVwZXRpdGlvbkNvdW50
ICYmIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSA+PSBtX3JlcGV0aXRpb25Db3VudCkgewotICAgICAg
ICAgICAgbV9hbmltYXRpb25GaW5pc2hlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUtLTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IDA7Ci0gICAgfQotCi0gICAgLy8gTm90aWZ5IG91ciBvYnNlcnZlciB0aGF0IHRo
ZSBhbmltYXRpb24gaGFzIGFkdmFuY2VkLgotICAgIGFuaW1hdGlvbk9ic2VydmVyKCktPmFuaW1h
dGlvbkFkdmFuY2VkKHRoaXMpOwotICAgICAgICAKLSAgICAvLyBLaWNrIG9mZiBhIHRpbWVyIHRv
IG1vdmUgdG8gdGhlIG5leHQgZnJhbWUuCi0gICAgbV9mcmFtZVRpbWVyID0gbmV3IFRpbWVyPElt
YWdlPih0aGlzLCAmSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwotICAgIG1fZnJhbWVUaW1lci0+
c3RhcnRPbmVTaG90KGZyYW1lRHVyYXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSk7Ci19Ci0K
LUludFJlY3QgSW1hZ2U6OnJlY3QoKSBjb25zdAotewotICAgIHJldHVybiBJbnRSZWN0KEludFBv
aW50KCksIHNpemUoKSk7CiB9CiAKLWludCBJbWFnZTo6d2lkdGgoKSBjb25zdAordm9pZCBCaXRt
YXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIHNpemUoKS53
aWR0aCgpOworICAgIHNpemVfdCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7CisgICAgaWYgKCFt
X2ZyYW1lcy5zaXplKCkgJiYgc2hvdWxkQW5pbWF0ZSgpKSB7ICAgICAgICAgICAgCisgICAgICAg
IC8vIFNuYWcgdGhlIHJlcGV0aXRpb24gY291bnQuCisgICAgICAgIG1fcmVwZXRpdGlvbkNvdW50
ID0gbV9zb3VyY2UucmVwZXRpdGlvbkNvdW50KCk7CisgICAgICAgIGlmIChtX3JlcGV0aXRpb25D
b3VudCA9PSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1fYW5pbWF0aW5nSW1hZ2VUeXBl
ID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1GcmFt
ZXMpCisgICAgICAgIG1fZnJhbWVzLnJlc2l6ZShudW1GcmFtZXMpOworICAgIAorICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsK
KyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOworICAgIAorICAgIGlmIChzaG91bGRBbmltYXRlKCkpCisgICAgICAgIG1fZnJhbWVz
W2luZGV4XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgp
OworICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBo
YUF0SW5kZXgoaW5kZXgpOwogfQogCi1pbnQgSW1hZ2U6OmhlaWdodCgpIGNvbnN0Citib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkKIHsKLSAgICByZXR1cm4gc2l6ZSgpLmhlaWdodCgp
OworICAgIHJldHVybiAobV9hbmltYXRpbmdJbWFnZVR5cGUgJiYgZnJhbWVDb3VudCgpID4gMSAm
JiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBtX2FuaW1hdGlvbk9ic2VydmVyKTsKIH0KIAogfQpJ
bmRleDogcGxhdGZvcm0vQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9CaXRt
YXBJbWFnZS5oCShyZXZpc2lvbiAxNTg0MSkKKysrIHBsYXRmb3JtL0JpdG1hcEltYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDE4NiArMjQsNTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgSU1BR0VfSF8KLSNkZWZpbmUgSU1BR0VfSF8KKyNpZm5kZWYgQml0bWFwSW1hZ2Vf
SAorI2RlZmluZSBCaXRtYXBJbWFnZV9ICiAKLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlU291
cmNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotCi0j
aWYgX19BUFBMRV9fCi0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU0ltYWdlOwotI2Vsc2UKLWNs
YXNzIE5TSW1hZ2U7Ci0jZW5kaWYKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
c3RydWN0IEZyYW1lRGF0YTsKLX0KLQotLy8gVGhpcyBjb21wbGljYXRlZC1sb29raW5nIGRlY2xh
cmF0aW9uIHRlbGxzIHRoZSBmcmFtZWRhdGEgVmVjdG9yIHRoYXQgaXQgY2FuIGNvcHkgd2l0aG91
dAotLy8gaGF2aW5nIHRvIGludm9rZSBvdXIgY29weSBjb25zdHJ1Y3Rvci4gVGhpcyBhbGxvd3Mg
dXMgdG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgcmVmIGNvdW50aW5nCi0vLyB0aGUgbmF0aXZl
IGZyYW1lcy4KLW5hbWVzcGFjZSBXVEYgeyAKLSAgICB0ZW1wbGF0ZTw+IGNsYXNzIFZlY3RvclRy
YWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHt9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZsb2F0UG9pbnQ7Ci1jbGFz
cyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbnRSZWN0OwotY2xh
c3MgSW50U2l6ZTsKLWNsYXNzIFBERkRvY3VtZW50SW1hZ2U7Ci1jbGFzcyBTdHJpbmc7Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUaW1lcjsKLQotLy8gVGhpcyBjbGFzcyBnZXRzIG5v
dGlmaWVkIHdoZW4gYW4gaW1hZ2UgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KLWNsYXNzIElt
YWdlQW5pbWF0aW9uT2JzZXJ2ZXI7Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7
Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAgIDptX2ZyYW1lKDApLCBtX2R1cmF0aW9uKDApLCBtX2hh
c0FscGhhKHRydWUpIAotICAgIHt9Ci0KLSAgICB+RnJhbWVEYXRhKCkKLSAgICB7IAotICAgICAg
ICBjbGVhcigpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIE5hdGl2ZUltYWdl
UHRyIG1fZnJhbWU7Ci0gICAgZmxvYXQgbV9kdXJhdGlvbjsKLSAgICBib29sIG1faGFzQWxwaGE7
Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQogCi1jbGFzcyBJbWFnZSA6IE5vbmNvcHlhYmxlIHsKLSAgICBmcmll
bmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1h
Z2UgewogcHVibGljOgotICAgIEltYWdlKCk7Ci0gICAgSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIsIGJvb2wgaXNQREYgPSBmYWxzZSk7Ci0gICAgfkltYWdlKCk7Ci0gICAg
Ci0gICAgc3RhdGljIEltYWdlKiBsb2FkUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0KLSAgICBib29s
IGlzTnVsbCgpIGNvbnN0OwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgSW50UmVj
dCByZWN0KCkgY29uc3Q7Ci0gICAgaW50IHdpZHRoKCkgY29uc3Q7Ci0gICAgaW50IGhlaWdodCgp
IGNvbnN0OwotCi0gICAgYm9vbCBzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBi
b29sIHNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIAotICAgIFZlY3RvcjxjaGFyPiYgZGF0YUJ1ZmZlcigpIHsgcmV0dXJuIG1fZGF0YTsgfQot
Ci0gICAgLy8gSXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1h
dGlvbiBjYWxsIGFzIHB1YmxpYyBBUEkuICBUaGlzIGlzIGJlY2F1c2UKLSAgICAvLyB3ZSBzdGFy
dCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiAgQW5pbWF0aW9uIGJlZ2lucyB3aGVuZXZlciBz
b21lb25lIGRyYXdzIHRoZSBpbWFnZS4gIEl0IHdpbGwKLSAgICAvLyBhdXRvbWF0aWNhbGx5IHBh
dXNlIG9uY2UgYWxsIG9ic2VydmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdl
IGFueXdoZXJlLgotICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpOwotICAgIHZvaWQgcmVzZXRBbmlt
YXRpb24oKTsKLSAgICAKLSAgICAvLyBGcmFtZSBhY2Nlc3NvcnMuCi0gICAgc2l6ZV90IGN1cnJl
bnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9Ci0gICAgc2l6ZV90IGZy
YW1lQ291bnQoKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KTsKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpOwotICAgIGJv
b2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KTsKLQotICAgIC8vIFR5cGljYWxs
eSB0aGUgQ2FjaGVkSW1hZ2UgdGhhdCBvd25zIHVzLgotICAgIEltYWdlQW5pbWF0aW9uT2JzZXJ2
ZXIqIGFuaW1hdGlvbk9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25PYnNlcnZl
cjsgfQotCi0gICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFJlcGVh
dFRpbGUgfTsKLSAgICAKLSNpZiBfX0FQUExFX18KLSAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2
ZSBpbWFnZSBmb3JtYXRzLgotICAgIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpOwotICAgIE5T
SW1hZ2UqIGdldE5TSW1hZ2UoKTsKLSAgICBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9u
KCk7Ci0KLSAgICAvLyBQREYKLSAgICB2b2lkIHNldElzUERGKCkgeyBtX2lzUERGID0gdHJ1ZTsg
fQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvcik7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IpOwotICAgIHZvaWQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsCi0g
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yKTsKLQotICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBh
IGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICB2b2lkIGNhY2hl
RnJhbWUoc2l6ZV90IGluZGV4KTsKKyAgICBCaXRtYXBJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2Vy
dmVyKiA9IDApOworICAgIHZpcnR1YWwgfkJpdG1hcEltYWdlKCk7CiAKKyAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBzZXROYXRpdmVEYXRh
KE5hdGl2ZUJ5dGVQdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAKICAgICAvLyBDYWxs
ZWQgdG8gaW52YWxpZGF0ZSBhbGwgb3VyIGNhY2hlZCBkYXRhIHdoZW4gbW9yZSBieXRlcyBhcmUg
YXZhaWxhYmxlLgotICAgIHZvaWQgaW52YWxpZGF0ZURhdGEoKTsKLQotICAgIC8vIFdoZXRoZXIg
b3Igbm90IHNpemUgaXMgYXZhaWxhYmxlIHlldC4gICAgCi0gICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKTsKLQotICAgIC8vIEFuaW1hdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZURh
dGEoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCk7CisgICAgCitwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGRBbmltYXRlKCk7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlv
bigpOwotICAgIHZvaWQgYWR2YW5jZUFuaW1hdGlvbihUaW1lcjxJbWFnZT4qIHRpbWVyKTsKICAg
ICAKLSAgICAvLyBDb25zdHJ1Y3RvciBmb3IgbmF0aXZlIGRhdGEuCi0gICAgdm9pZCBpbml0TmF0
aXZlRGF0YSgpOwotCi0gICAgLy8gRGVzdHJ1Y3RvciBmb3IgbmF0aXZlIGRhdGEuCi0gICAgdm9p
ZCBkZXN0cm95TmF0aXZlRGF0YSgpOwotCi0gICAgLy8gSW52YWxpZGF0aW9uIG9mIG5hdGl2ZSBk
YXRhLgotICAgIHZvaWQgaW52YWxpZGF0ZU5hdGl2ZURhdGEoKTsKLQotICAgIC8vIENoZWNrcyB0
byBzZWUgaWYgdGhlIGltYWdlIGlzIGEgMXgxIHNvbGlkIGNvbG9yLiAgV2Ugb3B0aW1pemUgdGhl
c2UgaW1hZ2VzIGFuZCBqdXN0IGRvIGEgZmlsbCByZWN0IGluc3RlYWQuCi0gICAgdm9pZCBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKLQotICAgIC8vIE1lbWJlcnMKLSAgICBWZWN0b3I8Y2hhcj4gbV9k
YXRhOyAvLyBUaGUgZW5jb2RlZCByYXcgZGF0YSBmb3IgdGhlIGltYWdlLgotICAgIEltYWdlU291
cmNlIG1fc291cmNlOwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRv
IHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUg
Zmlyc3QgaW1hZ2UpLgorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgIAotICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZTsg
Ly8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KLSAgICBWZWN0
b3I8RnJhbWVEYXRhPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMg
b2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRo
ZSBjYWNoZS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CisgICAgCisgICAg
dmlydHVhbCB2b2lkIGNoZWNrRm9yU29saWRDb2xvcigpOworICAgIHZpcnR1YWwgYm9vbCBpc1Nv
bGlkQ29sb3IoKSB7IHJldHVybiBtX2lzU29saWRDb2xvcjsgfQorICAgIHZpcnR1YWwgQ29sb3Ig
c29saWRDb2xvcigpIHsgcmV0dXJuIG1fc29saWRDb2xvcjsgfQorICAgIAorICAgIHZpcnR1YWwg
dm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCk7CiAgICAgCi0gICAgLy8gT3VyIGFuaW1hdGlv
biBvYnNlcnZlci4KLSAgICBJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBtX2FuaW1hdGlvbk9ic2Vy
dmVyOwotICAgIFRpbWVyPEltYWdlPiogbV9mcmFtZVRpbWVyOwotICAgIGludCBtX3JlcGV0aXRp
b25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4K
LSAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMg
d2UndmUgZmluaXNoZWQuCi0KLSNpZiBfX0FQUExFX18KLSAgICBtdXRhYmxlIE5TSW1hZ2UqIG1f
bnNJbWFnZTsgLy8gQSBjYWNoZWQgTlNJbWFnZSBvZiBmcmFtZSAwLiBPbmx5IGJ1aWx0IGxhemls
eSBpZiBzb21lb25lIGFjdHVhbGx5IHF1ZXJpZXMgZm9yIG9uZS4KLSAgICBtdXRhYmxlIENGRGF0
YVJlZiBtX3RpZmZSZXA7IC8vIENhY2hlZCBUSUZGIHJlcCBmb3IgZnJhbWUgMC4gIE9ubHkgYnVp
bHQgbGF6aWx5IGlmIHNvbWVvbmUgcXVlcmllcyBmb3Igb25lLgotICAgIFBERkRvY3VtZW50SW1h
Z2UqIG1fUERGRG9jOwotICAgIGJvb2wgbV9pc1BERjsKLSNlbmRpZgotCiAgICAgQ29sb3IgbV9z
b2xpZENvbG9yOyAgLy8gSWYgd2UncmUgYSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNv
bG9yIHRvIHVzZSB0byBmaWxsLgogICAgIGJvb2wgbV9pc1NvbGlkQ29sb3I7ICAvLyBXaGV0aGVy
IG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCi0KLSAgICBib29sIG1fYW5pbWF0aW5n
SW1hZ2VUeXBlOyAgLy8gV2hldGhlciBvciBub3Qgd2UncmUgYW4gaW1hZ2UgdHlwZSB0aGF0IGlz
IGNhcGFibGUgb2YgYW5pbWF0aW5nIChHSUYpLgotICAgIGJvb2wgbV9hbmltYXRpb25GaW5pc2hl
ZDsgIC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIGNvbXBsZXRlZCB0aGUgZW50aXJlIGFuaW1hdGlv
bi4KLQorICAgIAorICAgIEltYWdlU291cmNlIG1fc291cmNlOworICAgIAorICAgIG11dGFibGUg
SW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2Ug
KHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFibGUg
Ym9vbCBtX2hhdmVTaXplOyAvLyBXaGV0aGVyIG9yIG5vdCBvdXIgfG1fc2l6ZXwgbWVtYmVyIHZh
cmlhYmxlIGhhcyB0aGUgZmluYWwgb3ZlcmFsbCBpbWFnZSBzaXplIHlldC4KICAgICBib29sIG1f
c2l6ZUF2YWlsYWJsZTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6ZSBv
ZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KKyAgICAKKyAgICBib29s
IG1fYW5pbWF0aW5nSW1hZ2VUeXBlOyAgLy8gV2hldGhlciBvciBub3Qgd2UncmUgYW4gaW1hZ2Ug
dHlwZSB0aGF0IGlzIGNhcGFibGUgb2YgYW5pbWF0aW5nIChHSUYpLgogfTsKIAogfQpJbmRleDog
cGxhdGZvcm0vSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0ltYWdlLmNwcAkocmV2
aXNpb24gMTU4NjcpCisrKyBwbGF0Zm9ybS9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDQ1ICsyOCwyNCBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIF9fQVBQTEVf
XwotLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0j
aW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0vLyBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0KLUltYWdlOjpJbWFnZSgpCi06IG1fY3VycmVudEZyYW1lKDApLCBtX2Zy
YW1lcygwKSwgbV9hbmltYXRpb25PYnNlcnZlcigwKSwKLSAgbV9mcmFtZVRpbWVyKDApLCBtX3Jl
cGV0aXRpb25Db3VudCgwKSwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApLAotICBtX2lzU29saWRD
b2xvcihmYWxzZSksIG1fYW5pbWF0aW5nSW1hZ2VUeXBlKHRydWUpLCBtX2FuaW1hdGlvbkZpbmlz
aGVkKGZhbHNlKSwKLSAgbV9oYXZlU2l6ZShmYWxzZSksIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkK
LXsKLSAgICBpbml0TmF0aXZlRGF0YSgpOwotfQotCi1JbWFnZTo6SW1hZ2UoSW1hZ2VBbmltYXRp
b25PYnNlcnZlciogb2JzZXJ2ZXIsIGJvb2wgaXNQREYpCi0gOiBtX2N1cnJlbnRGcmFtZSgwKSwg
bV9mcmFtZXMoMCksIG1fYW5pbWF0aW9uT2JzZXJ2ZXIoMCksCi0gIG1fZnJhbWVUaW1lcigwKSwg
bV9yZXBldGl0aW9uQ291bnQoMCksIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKSwKLSAgbV9pc1Nv
bGlkQ29sb3IoZmFsc2UpLCBtX2FuaW1hdGluZ0ltYWdlVHlwZSh0cnVlKSwgbV9hbmltYXRpb25G
aW5pc2hlZChmYWxzZSksCi0gIG1faGF2ZVNpemUoZmFsc2UpLCBtX3NpemVBdmFpbGFibGUoZmFs
c2UpCitJbWFnZTo6SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogb2JzZXJ2ZXIpCisgICAg
OiBtX2N1cnJlbnRGcmFtZSgwKQorICAgICwgbV9mcmFtZXMoMCkKKyAgICAsIG1fcmVwZXRpdGlv
bkNvdW50KDApCisgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKKyAgICAsIG1fYW5pbWF0
aW9uRmluaXNoZWQoZmFsc2UpCisgICAgLCBtX2FuaW1hdGlvbk9ic2VydmVyKG9ic2VydmVyKQor
ICAgICwgbV9mcmFtZVRpbWVyKDApCiB7CiAgICAgaW5pdE5hdGl2ZURhdGEoKTsKLSNpZiBfX0FQ
UExFX18KLSAgICBpZiAoaXNQREYpCi0gICAgICAgIHNldElzUERGKCk7IC8vIEZJWE1FOiBXaWxs
IGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNsYXNzLgotI2VuZGlmCi0gICAgbV9hbmlt
YXRpb25PYnNlcnZlciA9IG9ic2VydmVyOwogfQogCiBJbWFnZTo6fkltYWdlKCkKQEAgLTgxLDU3
ICs2MCwxNSBAQCB2b2lkIEltYWdlOjppbnZhbGlkYXRlRGF0YSgpCiAgICAgLy8gRGVzdHJveSB0
aGUgY2FjaGVkIGltYWdlcyBhbmQgcmVsZWFzZSB0aGVtLgogICAgIGlmIChtX2ZyYW1lcy5zaXpl
KCkpIHsKICAgICAgICAgbV9mcmFtZXMubGFzdCgpLmNsZWFyKCk7Ci0gICAgICAgIG1faXNTb2xp
ZENvbG9yID0gZmFsc2U7CiAgICAgICAgIGludmFsaWRhdGVOYXRpdmVEYXRhKCk7CiAgICAgfQog
fQogCi12b2lkIEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKLXsKLSAgICBzaXplX3Qg
bnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghbV9mcmFtZXMuc2l6ZSgpICYmIHNo
b3VsZEFuaW1hdGUoKSkgeyAgICAgICAgICAgIAotICAgICAgICAvLyBTbmFnIHRoZSByZXBldGl0
aW9uIGNvdW50LgotICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IG1fc291cmNlLnJlcGV0aXRp
b25Db3VudCgpOwotICAgICAgICBpZiAobV9yZXBldGl0aW9uQ291bnQgPT0gY0FuaW1hdGlvbk5v
bmUpCi0gICAgICAgICAgICBtX2FuaW1hdGluZ0ltYWdlVHlwZSA9IGZhbHNlOwotICAgIH0KLSAg
ICAKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQotICAgICAgICBtX2ZyYW1l
cy5yZXNpemUobnVtRnJhbWVzKTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9z
b3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWUpCi0gICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotCi0gICAgaWYgKHNob3Vs
ZEFuaW1hdGUoKSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJj
ZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faGFz
QWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Ci19Ci0KIGJvb2wg
SW1hZ2U6OmlzTnVsbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNpemUoKS5pc0VtcHR5KCk7CiB9
CiAKLUludFNpemUgSW1hZ2U6OnNpemUoKSBjb25zdAotewotI2lmIF9fQVBQTEVfXwotICAgIC8v
IEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNsYXNzLgotICAgIGlm
IChtX2lzUERGKSB7Ci0gICAgICAgIGlmIChtX1BERkRvYykgewotICAgICAgICAgICAgRmxvYXRT
aXplIHNpemUgPSBtX1BERkRvYy0+c2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIEludFNpemUo
KGludClzaXplLndpZHRoKCksIChpbnQpc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UKLSNlbmRpZgotICAgIAotICAgIGlmIChtX3NpemVBdmFpbGFibGUgJiYgIW1faGF2ZVNp
emUpIHsKLSAgICAgICAgbV9zaXplID0gbV9zb3VyY2Uuc2l6ZSgpOwotICAgICAgICBtX2hhdmVT
aXplID0gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQogYm9vbCBJbWFnZTo6
c2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpbnQgbGVuZ3RoID0gbV9kYXRh
LnNpemUoKTsKQEAgLTE2MCw0MyArOTcsNiBAQCBib29sIEltYWdlOjpzZXREYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBJbWFnZTo6c2V0TmF0
aXZlRGF0YShOYXRpdmVCeXRlUHRyIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotI2lm
IF9fQVBQTEVfXwotICAgIC8vIEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBh
IHN1YmNsYXNzLgotICAgIGlmIChtX2lzUERGKSB7Ci0gICAgICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQgJiYgIW1fUERGRG9jKQotICAgICAgICAgICAgbV9QREZEb2MgPSBuZXcgUERGRG9jdW1lbnRJ
bWFnZShkYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fUERGRG9jOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgaW52YWxpZGF0ZURhdGEoKTsKLSAgICAKLSAgICAvLyBGZWVkIGFsbCB0aGUgZGF0YSB3ZSd2
ZSBzZWVuIHNvIGZhciB0byB0aGUgaW1hZ2UgZGVjb2Rlci4KLSAgICBtX3NvdXJjZS5zZXREYXRh
KGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgCi0gICAgLy8gSW1hZ2UgcHJvcGVydGllcyB3
aWxsIG5vdCBiZSBhdmFpbGFibGUgdW50aWwgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBmaWxlCi0g
ICAgLy8gcmVhY2hlcyBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUuCi0gICAgcmV0dXJuIGlzU2l6
ZUF2YWlsYWJsZSgpOwotfQotCi1zaXplX3QgSW1hZ2U6OmZyYW1lQ291bnQoKQotewotICAgIHJl
dHVybiBtX3NvdXJjZS5mcmFtZUNvdW50KCk7Ci19Ci0KLWJvb2wgSW1hZ2U6OmlzU2l6ZUF2YWls
YWJsZSgpCi17Ci0gICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBtX3NpemVBdmFpbGFibGUgPSBtX3NvdXJjZS5pc1NpemVBdmFpbGFibGUoKTsKLQot
ICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7Ci0KLX0KLQogTmF0aXZlSW1hZ2VQdHIgSW1hZ2U6
OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291
bnQoKSkKQEAgLTIzMCwxMSArMTMwLDYgQEAgYm9vbCBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IAogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKIH0KIAot
Ym9vbCBJbWFnZTo6c2hvdWxkQW5pbWF0ZSgpCi17Ci0gICAgcmV0dXJuIChtX2FuaW1hdGluZ0lt
YWdlVHlwZSAmJiBmcmFtZUNvdW50KCkgPiAxICYmICFtX2FuaW1hdGlvbkZpbmlzaGVkICYmIG1f
YW5pbWF0aW9uT2JzZXJ2ZXIpOwotfQotCiB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbigpCiB7
CiAgICAgaWYgKG1fZnJhbWVUaW1lciB8fCAhc2hvdWxkQW5pbWF0ZSgpKQpJbmRleDogcGxhdGZv
cm0vSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9JbWFnZS5oCShyZXZpc2lvbiAxNTg2
NykKKysrIHBsYXRmb3JtL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSU1BR0VfSF8KLSNkZWZpbmUgSU1BR0Vf
SF8KKyNpZm5kZWYgSW1hZ2VfSAorI2RlZmluZSBJbWFnZV9ICiAKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTU5LDcgKzU5LDYgQEAgY2xhc3MgRmxv
YXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBQREZEb2N1bWVudEltYWdlOwogY2xhc3MgU3RyaW5nOwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGltZXI7CkBAIC03Myw3ICs3Miw5IEBAIGNsYXNzIEltYWdl
QW5pbWF0aW9uT2JzZXJ2ZXI7CiAKIHN0cnVjdCBGcmFtZURhdGEgewogICAgIEZyYW1lRGF0YSgp
Ci0gICAgICA6bV9mcmFtZSgwKSwgbV9kdXJhdGlvbigwKSwgbV9oYXNBbHBoYSh0cnVlKSAKKyAg
ICAgICAgOiBtX2ZyYW1lKDApCisgICAgICAgICwgbV9kdXJhdGlvbigwKQorICAgICAgICAsIG1f
aGFzQWxwaGEodHJ1ZSkKICAgICB7fQogCiAgICAgfkZyYW1lRGF0YSgpCkBAIC05NSwyMiArOTYs
MjEgQEAgc3RydWN0IEZyYW1lRGF0YSB7CiBjbGFzcyBJbWFnZSA6IE5vbmNvcHlhYmxlIHsKICAg
ICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogcHVibGljOgotICAgIEltYWdlKCk7Ci0g
ICAgSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogb2JzZXJ2ZXIsIGJvb2wgaXNQREYgPSBm
YWxzZSk7Ci0gICAgfkltYWdlKCk7CisgICAgSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciog
PSAwKTsKKyAgICB2aXJ0dWFsIH5JbWFnZSgpOwogICAgIAogICAgIHN0YXRpYyBJbWFnZSogbG9h
ZFJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpOwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKIAotICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Qg
PSAwOwogICAgIEludFJlY3QgcmVjdCgpIGNvbnN0OwogICAgIGludCB3aWR0aCgpIGNvbnN0Owog
ICAgIGludCBoZWlnaHQoKSBjb25zdDsKIAotICAgIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7Ci0gICAgYm9vbCBzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgdmlydHVhbCBib29sIHNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgVmVjdG9yPGNo
YXI+JiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gRnJhbWUgYWNjZXNzb3JzLgogICAgIHNpemVfdCBjdXJy
ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQotICAgIHNpemVfdCBm
cmFtZUNvdW50KCk7CisgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpICB7IHJldHVybiAw
OyB9CiAgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCk7CiAgICAg
ZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KTsKICAgICBib29sIGZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCk7CkBAIC0xMzcsMzEgKzEzNyw0MiBAQCBwdWJs
aWM6CiAgICAgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCk7CiAgICAgTlNJbWFnZSogZ2V0TlNJ
bWFnZSgpOwogICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKTsKLQotICAgIC8v
IFBERgotICAgIHZvaWQgc2V0SXNQREYoKSB7IG1faXNQREYgPSB0cnVlOyB9CiAjZW5kaWYKKyAg
ICAKK3Byb3RlY3RlZDoKKyAgICAvLyBBbmltYXRpb24uCisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEFuaW1hdGUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1h
dGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlQW5pbWF0aW9uKFRpbWVyPEltYWdlPiop
OworICAgIAorICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGFsbCBvdXIgY2FjaGVkIGRhdGEg
d2hlbiBtb3JlIGJ5dGVzIGFyZSBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVEYXRhKCk7CisgICAgCisgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQg
cmF3IGRhdGEgZm9yIHRoZSBpbWFnZS4KKyAgICAKKyAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7
IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCisgICAgVmVj
dG9yPEZyYW1lRGF0YT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCisgICAgCisgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50OyAvLyBIb3cgbWFueSB0
b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLgorICAgIGludCBtX3JlcGV0aXRpb25z
Q29tcGxldGU7ICAvLyBIb3cgbWFueSByZXBldGl0aW9ucyB3ZSd2ZSBmaW5pc2hlZC4KKyAgICAK
KyAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWQ7ICAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSBj
b21wbGV0ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCisgICAgCisgICAgLy8gT3VyIGFuaW1hdGlv
biBvYnNlcnZlci4KKyAgICBJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBtX2FuaW1hdGlvbk9ic2Vy
dmVyOwogCiBwcml2YXRlOgotICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvcikgPSAwOwogICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yKTsKICAgICB2b2lkIGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLAogICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBm
cmFtZS4gTmV2ZXIgYWNjZXNzZWQgZXhjZXB0IGludGVybmFsbHkuCi0gICAgdm9pZCBjYWNoZUZy
YW1lKHNpemVfdCBpbmRleCk7Ci0KLSAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBhbGwgb3Vy
IGNhY2hlZCBkYXRhIHdoZW4gbW9yZSBieXRlcyBhcmUgYXZhaWxhYmxlLgotICAgIHZvaWQgaW52
YWxpZGF0ZURhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgp
IHsgfTsKIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IHNpemUgaXMgYXZhaWxhYmxlIHlldC4gICAg
Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKLQotICAgIC8vIEFuaW1hdGlvbi4KLSAgICBi
b29sIHNob3VsZEFuaW1hdGUoKTsKLSAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uKCk7Ci0gICAgdm9p
ZCBhZHZhbmNlQW5pbWF0aW9uKFRpbWVyPEltYWdlPiogdGltZXIpOworICAgIHZpcnR1YWwgYm9v
bCBpc1NpemVBdmFpbGFibGUoKSA9IDA7CiAgICAgCiAgICAgLy8gQ29uc3RydWN0b3IgZm9yIG5h
dGl2ZSBkYXRhLgogICAgIHZvaWQgaW5pdE5hdGl2ZURhdGEoKTsKQEAgLTE3MywzNyArMTg0LDE2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlTmF0aXZlRGF0YSgpOwogCiAgICAgLy8g
Q2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAxeDEgc29saWQgY29sb3IuICBXZSBvcHRp
bWl6ZSB0aGVzZSBpbWFnZXMgYW5kIGp1c3QgZG8gYSBmaWxsIHJlY3QgaW5zdGVhZC4KLSAgICB2
b2lkIGNoZWNrRm9yU29saWRDb2xvcigpOwotCi0gICAgLy8gTWVtYmVycwotICAgIFZlY3Rvcjxj
aGFyPiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIHJhdyBkYXRhIGZvciB0aGUgaW1hZ2UuCi0gICAg
SW1hZ2VTb3VyY2UgbV9zb3VyY2U7Ci0gICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsgLy8gVGhl
IHNpemUgdG8gdXNlIGZvciB0aGUgb3ZlcmFsbCBpbWFnZSAod2lsbCBqdXN0IGJlIHRoZSBzaXpl
IG9mIHRoZSBmaXJzdCBpbWFnZSkuCi0gICAgCi0gICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAv
LyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3Rv
cjxGcmFtZURhdGE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBv
ZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhl
IGNhY2hlLgorICAgIHZpcnR1YWwgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IENvbG9yIHNvbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgCi0gICAgLy8gT3Vy
IGFuaW1hdGlvbiBvYnNlcnZlci4KLSAgICBJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBtX2FuaW1h
dGlvbk9ic2VydmVyOwogICAgIFRpbWVyPEltYWdlPiogbV9mcmFtZVRpbWVyOwotICAgIGludCBt
X3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNo
b3VsZCBkby4KLSAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVw
ZXRpdGlvbnMgd2UndmUgZmluaXNoZWQuCiAKICNpZiBfX0FQUExFX18KICAgICBtdXRhYmxlIE5T
SW1hZ2UqIG1fbnNJbWFnZTsgLy8gQSBjYWNoZWQgTlNJbWFnZSBvZiBmcmFtZSAwLiBPbmx5IGJ1
aWx0IGxhemlseSBpZiBzb21lb25lIGFjdHVhbGx5IHF1ZXJpZXMgZm9yIG9uZS4KICAgICBtdXRh
YmxlIENGRGF0YVJlZiBtX3RpZmZSZXA7IC8vIENhY2hlZCBUSUZGIHJlcCBmb3IgZnJhbWUgMC4g
IE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNvbWVvbmUgcXVlcmllcyBmb3Igb25lLgotICAgIFBERkRv
Y3VtZW50SW1hZ2UqIG1fUERGRG9jOwotICAgIGJvb2wgbV9pc1BERjsKICNlbmRpZgotCi0gICAg
Q29sb3IgbV9zb2xpZENvbG9yOyAgLy8gSWYgd2UncmUgYSAxeDEgc29saWQgY29sb3IsIHRoaXMg
aXMgdGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgotICAgIGJvb2wgbV9pc1NvbGlkQ29sb3I7ICAv
LyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCi0KLSAgICBib29sIG1f
YW5pbWF0aW5nSW1hZ2VUeXBlOyAgLy8gV2hldGhlciBvciBub3Qgd2UncmUgYW4gaW1hZ2UgdHlw
ZSB0aGF0IGlzIGNhcGFibGUgb2YgYW5pbWF0aW5nIChHSUYpLgotICAgIGJvb2wgbV9hbmltYXRp
b25GaW5pc2hlZDsgIC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIGNvbXBsZXRlZCB0aGUgZW50aXJl
IGFuaW1hdGlvbi4KLQotICAgIG11dGFibGUgYm9vbCBtX2hhdmVTaXplOyAvLyBXaGV0aGVyIG9y
IG5vdCBvdXIgfG1fc2l6ZXwgbWVtYmVyIHZhcmlhYmxlIGhhcyB0aGUgZmluYWwgb3ZlcmFsbCBp
bWFnZSBzaXplIHlldC4KLSAgICBib29sIG1fc2l6ZUF2YWlsYWJsZTsgLy8gV2hldGhlciBvciBu
b3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZy
b20gSW1hZ2VJTy4KIH07CiAKIH0KSW5kZXg6IHBsYXRmb3JtL1NWR0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwbGF0Zm9ybS9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9T
VkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpZmRlZiBTVkdfU1VQUE9SVAorCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWVN
YWMuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNp
bmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHSW1hZ2U6OlNWR0ltYWdlKEltYWdlQW5pbWF0aW9u
T2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX2xhc3RE
YXRhT2Zmc2V0KDApCisgICAgLCBtX2ZyYW1lKDApCisgICAgLCBtX2ZyYW1lVmlldygwKQorewor
fQorCitTVkdJbWFnZTo6flNWR0ltYWdlKCkKK3sKK30KKworSW50U2l6ZSBTVkdJbWFnZTo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAg
IGlmICghcm9vdEVsZW1lbnQpCisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisgICAgCisgICAg
U1ZHTGVuZ3RoKiB3aWR0aCA9IHJvb3RFbGVtZW50LT53aWR0aCgpLT5iYXNlVmFsKCk7CisgICAg
U1ZHTGVuZ3RoKiBoZWlnaHQgPSByb290RWxlbWVudC0+aGVpZ2h0KCktPmJhc2VWYWwoKTsKKyAg
ICAKKyAgICBJbnRTaXplIHN2Z1NpemU7CisgICAgLy8gRklYTUU6IFdlIGhhdmUgbm8gdmlldyB0
byBzaXplIGFnYWluc3QsIHRodXMgcGVyY2VudGFnZXMgYXJlIGFsd2F5cyAwLCBoZW5jZSB3ZSBo
YWNrIGZvciBub3c6CisgICAgaWYgKHdpZHRoLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZH
X0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKKyAgICAgICAgc3ZnU2l6ZS5zZXRXaWR0aCgxMDAwKTsK
KyAgICBlbHNlCisgICAgICAgIHN2Z1NpemUuc2V0V2lkdGgod2lkdGgtPnZhbHVlKCkpOworICAg
IGlmIChoZWlnaHQtPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJD
RU5UQUdFKQorICAgICAgICBzdmdTaXplLnNldEhlaWdodCgxMDAwKTsKKyAgICBlbHNlCisgICAg
ICAgIHN2Z1NpemUuc2V0SGVpZ2h0KGhlaWdodC0+dmFsdWUoKSk7CisgICAgCisgICAgcmV0dXJu
IHN2Z1NpemU7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit7CisgICAgaWYgKG1fZnJhbWUpIHsKKyAg
ICAgICAgY29udGV4dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LT5hZGRDbGlwKGVuY2xvc2lu
Z0ludFJlY3QoZHN0UmVjdCkpOworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC5s
b2NhdGlvbigpIC0gRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkc3RSZWN0LndpZHRoKCkvc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgp
L3NyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9mcmFtZS0+cGFpbnQoY29udGV4dCwgZW5j
bG9zaW5nSW50UmVjdChzcmNSZWN0KSk7CisgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICB9Cit9CisKK2Jvb2wgU1ZHSW1hZ2U6OnNldERhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7
CisgICAgaW50IGxlbmd0aCA9IG1fZGF0YS5zaXplKCk7CisgICAgaWYgKCFsZW5ndGgpIC8vIGlm
IHRoaXMgd2FzIGFuIGVtcHR5IGltYWdlCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKKyAgICAgICAgbV9wYWdlID0gbmV3IFBhZ2UoMCk7Cisg
ICAgICAgIG1fZnJhbWUgPSBuZXcgRnJhbWVNYWMobV9wYWdlLCAwKTsKKyAgICAgICAgbV9mcmFt
ZVZpZXcgPSBuZXcgRnJhbWVWaWV3KG1fZnJhbWUuZ2V0KCkpOworICAgICAgICBtX2ZyYW1lLT5z
ZXRWaWV3KG1fZnJhbWVWaWV3LmdldCgpKTsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGZha2VS
ZXF1ZXN0OworICAgICAgICBmYWtlUmVxdWVzdC5tX3Jlc3BvbnNlTUlNRVR5cGUgPSAiaW1hZ2Uv
c3ZnK3htbCI7CisgICAgICAgIG1fZnJhbWUtPnNldFJlc291cmNlUmVxdWVzdChmYWtlUmVxdWVz
dCk7CisgICAgICAgIFNldHRpbmdzKiBsZWFrZWRTZXR0aW5ncyA9IG5ldyBTZXR0aW5ncygpOwor
ICAgICAgICBtX2ZyYW1lLT5zZXRTZXR0aW5ncyhsZWFrZWRTZXR0aW5ncyk7CisgICAgICAgIG1f
ZnJhbWUtPmJlZ2luKCJwbGFjZWhvbGRlci5zdmciKTsKKyAgICAgICAgbV9mcmFtZS0+d3JpdGUo
bV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7CisgICAgICAgIG1fZnJhbWUtPmVuZCgpOwor
ICAgIH0KKyAgICByZXR1cm4gbV9mcmFtZVZpZXc7Cit9CisKK2Jvb2wgU1ZHSW1hZ2U6OnNob3Vs
ZEFuaW1hdGUoKQoreworICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6IGV2ZW50dWFsbHkgdGhp
cyB3aWxsIG5lZWQgdG8gYmUgd2lyZWQgaW50byB0aGUgU1ZHIGFuaW1hdGlvbiBjb2RlCit9CisK
K3ZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogRXZlbnR1
YWxseSB0aGlzIHdpbGwgbmVlZCB0byBiZSB3aXJlZCBpbnRvIHRoZSBTVkcgYW5pbWF0aW9uIGNv
ZGUKK30KKwordm9pZCBTVkdJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbihUaW1lcjxJbWFnZT4qIHRp
bWVyKQoreworICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgd2lsbCBuZWVkIHRvIGJlIHdp
cmVkIGludG8gdGhlIFNWRyBhbmltYXRpb24gY29kZQorfQorCit9CisKKyNlbmRpZiAvLyBTVkdf
U1VQUE9SVApJbmRleDogcGxhdGZvcm0vU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9TVkdJbWFnZS5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vU1ZHSW1hZ2UuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NyBAQAorCisjaWZuZGVmIFNWR0ltYWdlX0gKKyNkZWZpbmUgU1ZH
SW1hZ2VfSAorCisjaWZkZWYgU1ZHX1NVUFBPUlQKKworI2luY2x1ZGUgIkltYWdlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBTVkdEb2N1bWVudDsKKyAgICBjbGFz
cyBGcmFtZTsKKyAgICBjbGFzcyBGcmFtZVZpZXc7CisgICAgY2xhc3MgUGFnZTsKKyAgICAKKyAg
ICBjbGFzcyBTVkdJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgcHVibGljOgorICAgICAgICBT
VkdJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVyKik7CisgICAgICAgIH5TVkdJbWFnZSgpOwor
ICAgICAgICAKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICAgICAg
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAgICAgCisgICAgcHJvdGVjdGVkOiAKKyAgICAgICAgLy8gQW5pbWF0aW9uLgorICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQW5pbWF0ZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRB
bmltYXRpb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkdmFuY2VBbmltYXRpb24oVGltZXI8
SW1hZ2U+Kik7CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIAorICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
CisgICAgICAgIFNWR0RvY3VtZW50KiBtX2RvY3VtZW50OworICAgICAgICBzaXplX3QgbV9sYXN0
RGF0YU9mZnNldDsKKyAgICAgICAgUGFnZSogbV9wYWdlOworICAgICAgICBSZWZQdHI8RnJhbWU+
IG1fZnJhbWU7CisgICAgICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fZnJhbWVWaWV3OworICAgICAg
ICBJbnRTaXplIG1fbWluU2l6ZTsKKyAgICB9OworfQorCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
KworI2VuZGlmCkluZGV4OiBwbGF0Zm9ybS9tYWMvQml0bWFwSW1hZ2VNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vbWFjL0JpdG1hcEltYWdlTWFjLm1tCShyZXZpc2lvbiAxNTg0MSkKKysr
IHBsYXRmb3JtL21hYy9CaXRtYXBJbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIg
KzI0LDExIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJJbWFnZS5oIgor
I2ltcG9ydCAiQml0bWFwSW1hZ2UuaCIKIAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCiAjaW1wb3J0
ICJGb3VuZGF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBv
cnQgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW1w
b3J0ICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKQEAgLTU0LDEzICs1MywxMCBAQCB2b2lkIEltYWdlOjppbml0TmF0aXZlRGF0YSgpCiB7
CiAgICAgbV9uc0ltYWdlID0gMDsKICAgICBtX3RpZmZSZXAgPSAwOwotICAgIG1faXNQREYgPSBm
YWxzZTsKLSAgICBtX1BERkRvYyA9IDA7CiB9CiAKIHZvaWQgSW1hZ2U6OmRlc3Ryb3lOYXRpdmVE
YXRhKCkKIHsKLSAgICBkZWxldGUgbV9QREZEb2M7CiB9CiAKIHZvaWQgSW1hZ2U6OmludmFsaWRh
dGVOYXRpdmVEYXRhKCkKQEAgLTg1LDcgKzgxLDcgQEAgSW1hZ2UqIEltYWdlOjpsb2FkUmVzb3Vy
Y2UoY29uc3QgY2hhciAqbgogICAgIE5TU3RyaW5nICppbWFnZVBhdGggPSBbYnVuZGxlIHBhdGhG
b3JSZXNvdXJjZTpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bmFtZV0gb2ZUeXBlOkAi
dGlmZiJdOwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAg
ICAgSW1hZ2UqIGltYWdlID0gbmV3IEltYWdlOworICAgICAgICBJbWFnZSogaW1hZ2UgPSBuZXcg
Qml0bWFwSW1hZ2U7CiAgICAgICAgIGltYWdlLT5zZXROYXRpdmVEYXRhKChDRkRhdGFSZWYpbmFt
ZWRJbWFnZURhdGEsIHRydWUpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTAx
LDcgKzk3LDcgQEAgYm9vbCBJbWFnZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdAogCiAv
LyBEcmF3aW5nIFJvdXRpbmVzCiAKLXZvaWQgSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCit2
b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogewogICAgIGlmIChmcmFtZUNv
dW50KCkgPiAxKQogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwpAQCAtMTE5LDkgKzEx
NSw5IEBAIHZvaWQgSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgICAgICAgICAgICAg
Q0dSZWN0IGRzdCA9IHsgezAsIDB9LCB7MSwgMX0gfTsKICAgICAgICAgICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYm1hcCwgZHN0LCBpbWFnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBpeGVs
WzNdID09IDApCi0gICAgICAgICAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAs
IDAsIDApOworICAgICAgICAgICAgICAgICAgICBzb2xpZENvbG9yKCkgPSBDb2xvcigwLCAwLCAw
LCAwKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc29saWRD
b2xvciA9IENvbG9yKGludChwaXhlbFswXSAvIHBpeGVsWzNdICogMjU1KSwgaW50KHBpeGVsWzFd
IC8gcGl4ZWxbM10gKiAyNTUpLCBpbnQocGl4ZWxbMl0gLyBwaXhlbFszXSAqIDI1NSksIGludChw
aXhlbFszXSAqIDI1NSkpOworICAgICAgICAgICAgICAgICAgICBzb2xpZENvbG9yKCkgPSBDb2xv
cihpbnQocGl4ZWxbMF0gLyBwaXhlbFszXSAqIDI1NSksIGludChwaXhlbFsxXSAvIHBpeGVsWzNd
ICogMjU1KSwgaW50KHBpeGVsWzJdIC8gcGl4ZWxbM10gKiAyNTUpLCBpbnQocGl4ZWxbM10gKiAy
NTUpKTsKICAgICAgICAgICAgICAgICBtX2lzU29saWRDb2xvciA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgQ0ZSZWxlYXNlKGJtYXApOwogICAgICAgICAgICAgfSAKQEAgLTE3NSwxNCArMTcxLDgg
QEAgQ0dJbWFnZVJlZiBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiAgICAgcmV0dXJuIGZyYW1lQXRJ
bmRleCgwKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCkKLXsKLSAgICBpZiAobV9pc1BERikgewotICAgICAgICBp
ZiAobV9QREZEb2MpCi0gICAgICAgICAgICBtX1BERkRvYy0+ZHJhdyhjdHh0LCBzcmNSZWN0LCBk
c3RSZWN0LCBjb21wb3NpdGVPcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotICAgIAordm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCkKK3sgICAgCiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgCkBAIC0xOTMsMTEgKzE4MywxMSBAQCB2b2lkIEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgCiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChtX2lzU29saWRDb2xvciAmJiBtX2N1cnJlbnRGcmFtZSA9PSAwKSB7Ci0gICAgICAgIGlm
IChtX3NvbGlkQ29sb3IuYWxwaGEoKSA+IDApIHsKKyAgICBpZiAoaXNTb2xpZENvbG9yKCkgJiYg
bV9jdXJyZW50RnJhbWUgPT0gMCkgeworICAgICAgICBpZiAoc29saWRDb2xvcigpLmFscGhhKCkg
PiAwKSB7CiAgICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjdHh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNBbHBoYSgpICYmIGNvbXBvc2l0ZU9w
ID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogY29tcG9zaXRlT3ApOwot
ICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoaXIsIG1fc29saWRDb2xvcik7CisgICAgICAgICAg
ICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIXNvbGlkQ29sb3IoKS5oYXNBbHBoYSgpICYm
IGNvbXBvc2l0ZU9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogY29t
cG9zaXRlT3ApOworICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoaXIsIHNvbGlkQ29sb3IoKSk7
CiAgICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwpAQCAtMjU4LDcgKzI0OCw2IEBAIHZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCAKICAgICBjdHh0LT5yZXN0b3JlKCk7CiAgICAgCiAgICAgc3RhcnRBbmltYXRpb24oKTsK
LQogfQogCiBzdGF0aWMgdm9pZCBkcmF3UGF0dGVybih2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYg
Y29udGV4dCkKQEAgLTI4MCwxMSArMjY5LDExIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFw
aGljc0NvbnRleHQqIGMKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAo
bV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7CisgICAgaWYgKGlzU29saWRDb2xvcigpICYmIG1f
Y3VycmVudEZyYW1lID09IDApIHsKKyAgICAgICAgaWYgKHNvbGlkQ29sb3IoKS5hbHBoYSgpID4g
MCkgewogICAgICAgICAgICAgY3R4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY3R4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKCFtX3NvbGlkQ29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3Np
dGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICAgICAgICAgIGN0eHQtPmZp
bGxSZWN0KGRlc3RSZWN0LCBtX3NvbGlkQ29sb3IpOworICAgICAgICAgICAgY3R4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKCFzb2xpZENvbG9yKCkuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3Np
dGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKKyAgICAgICAgICAgIGN0eHQtPmZp
bGxSZWN0KGRlc3RSZWN0LCBzb2xpZENvbG9yKCkpOwogICAgICAgICAgICAgY3R4dC0+cmVzdG9y
ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTM2NiwxMSArMzU1LDExIEBAIHZv
aWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGMKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJh
bWUgPT0gMCkgewotICAgICAgICBpZiAobV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7CisgICAg
aWYgKGlzU29saWRDb2xvcigpICYmIG1fY3VycmVudEZyYW1lID09IDApIHsKKyAgICAgICAgaWYg
KHNvbGlkQ29sb3IoKS5hbHBoYSgpID4gMCkgewogICAgICAgICAgICAgY3R4dC0+c2F2ZSgpOwot
ICAgICAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFtX3NvbGlkQ29sb3IuaGFz
QWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9w
KTsKLSAgICAgICAgICAgIGN0eHQtPmZpbGxSZWN0KGRzdFJlY3QsIG1fc29saWRDb2xvcik7Cisg
ICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIXNvbGlkQ29sb3IoKS5oYXNB
bHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3Ap
OworICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZHN0UmVjdCwgc29saWRDb2xvcigpKTsKICAg
ICAgICAgICAgIGN0eHQtPnJlc3RvcmUoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBwbGF0Zm9ybS9tYWMvSW1hZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbWFj
L0ltYWdlTWFjLm1tCShyZXZpc2lvbiAxNTg2NykKKysrIHBsYXRmb3JtL21hYy9JbWFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw0NTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJJbWFnZS5oIgotCi0jaW1w
b3J0ICJGbG9hdFJlY3QuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2ltcG9y
dCAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbXBvcnQgIldlYkNvcmVGcmFtZUJyaWRnZS5oIgotI2lt
cG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgRnJhbWVEYXRhOjpjbGVhcigpCi17Ci0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAg
Q0ZSZWxlYXNlKG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICAgICAgbV9kdXJh
dGlvbiA9IDAuOwotICAgICAgICBtX2hhc0FscGhhID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gSW1hZ2Ug
Q2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotCi12b2lkIEltYWdlOjppbml0TmF0aXZlRGF0YSgpCi17Ci0gICAgbV9uc0ltYWdlID0gMDsK
LSAgICBtX3RpZmZSZXAgPSAwOwotICAgIG1faXNQREYgPSBmYWxzZTsKLSAgICBtX1BERkRvYyA9
IDA7Ci19Ci0KLXZvaWQgSW1hZ2U6OmRlc3Ryb3lOYXRpdmVEYXRhKCkKLXsKLSAgICBkZWxldGUg
bV9QREZEb2M7Ci19Ci0KLXZvaWQgSW1hZ2U6OmludmFsaWRhdGVOYXRpdmVEYXRhKCkKLXsKLSAg
ICBpZiAobV9mcmFtZXMuc2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X25zSW1hZ2UpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKG1fbnNJbWFnZSk7Ci0gICAgICAgIG1fbnNJ
bWFnZSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1fdGlmZlJlcCkgewotICAgICAgICBDRlJlbGVh
c2UobV90aWZmUmVwKTsKLSAgICAgICAgbV90aWZmUmVwID0gMDsKLSAgICB9Ci19Ci0KLUltYWdl
KiBJbWFnZTo6bG9hZFJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gICAgTlNCdW5kbGUg
KmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZUZyYW1lQnJpZGdlIGNs
YXNzXV07Ci0gICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJ0aWZmIl07Ci0g
ICAgTlNEYXRhICpuYW1lZEltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmls
ZTppbWFnZVBhdGhdOwotICAgIGlmIChuYW1lZEltYWdlRGF0YSkgewotICAgICAgICBJbWFnZSog
aW1hZ2UgPSBuZXcgSW1hZ2U7Ci0gICAgICAgIGltYWdlLT5zZXROYXRpdmVEYXRhKChDRkRhdGFS
ZWYpbmFtZWRJbWFnZURhdGEsIHRydWUpOwotICAgICAgICByZXR1cm4gaW1hZ2U7Ci0gICAgfQot
ICAgIHJldHVybiAwOwotfQotCi1ib29sIEltYWdlOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQotewotICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgaWYgdGhpcyB3YXMgbG9v
a2luZyBpbiBhIHNldCByYXRoZXIgdGhhbiBhbiBOU0FycmF5LgotICAgIC8vIEZJWE1FOiBXb3Vs
ZCBiZSBiZXR0ZXIgbm90IHRvIGNvbnZlcnQgdG8gYW4gTlNTdHJpbmcganVzdCB0byBjaGVjayBp
ZiBhIHR5cGUgaXMgc3VwcG9ydGVkLgotICAgIHJldHVybiBbW1dlYkNvcmVGcmFtZUJyaWRnZSBz
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzXSBjb250YWluc09iamVjdDp0eXBlXTsKLX0K
LQotLy8gRHJhd2luZyBSb3V0aW5lcwotCi12b2lkIEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Io
KQotewotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICBtX2lzU29saWRDb2xvciA9
IGZhbHNlOwotICAgIGVsc2UgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdElu
ZGV4KDApOwotICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9y
IHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdl
LgotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IDEpIHsKLSAgICAgICAgICAgIENHRmxvYXQgcGl4ZWxb
NF07IC8vIFJHQkEKLSAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlZiBzcGFjZSA9IENHQ29sb3JT
cGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGJtYXAgPSBD
R0JpdG1hcENvbnRleHRDcmVhdGUoJnBpeGVsLCAxLCAxLCA4KnNpemVvZihmbG9hdCksIHNpemVv
ZihwaXhlbCksIHNwYWNlLAotICAgICAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCB8IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCk7Ci0gICAgICAgICAgICBpZiAoYm1hcCkgewotICAgICAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dChibWFwKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ICAgICAgICAgICAgQ0dSZWN0IGRzdCA9IHsgezAsIDB9LCB7MSwgMX0gfTsKLSAgICAgICAgICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYm1hcCwgZHN0LCBpbWFnZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHBpeGVsWzNdID09IDApCi0gICAgICAgICAgICAgICAgICAgIG1fc29saWRDb2xvciA9
IENvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgbV9zb2xpZENvbG9yID0gQ29sb3IoaW50KHBpeGVsWzBdIC8gcGl4ZWxbM10gKiAyNTUp
LCBpbnQocGl4ZWxbMV0gLyBwaXhlbFszXSAqIDI1NSksIGludChwaXhlbFsyXSAvIHBpeGVsWzNd
ICogMjU1KSwgaW50KHBpeGVsWzNdICogMjU1KSk7Ci0gICAgICAgICAgICAgICAgbV9pc1NvbGlk
Q29sb3IgPSB0cnVlOwotICAgICAgICAgICAgICAgIENGUmVsZWFzZShibWFwKTsKLSAgICAgICAg
ICAgIH0gCi0gICAgICAgICAgICBDRlJlbGVhc2Uoc3BhY2UpOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1DRkRhdGFSZWYgSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbigpCi17Ci0gICAgaWYg
KG1fdGlmZlJlcCkKLSAgICAgICAgcmV0dXJuIG1fdGlmZlJlcDsKLSAgICAKLSAgICB1bnNpZ25l
ZCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7Ci0gICAgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhID0g
Q0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKTsKLSAgICAvLyBGSVhNRTogIFVzZSB0eXBlIGtDR0lt
YWdlVHlwZUlkZW50aWZpZXJUSUZGIGNvbnN0YW50IG9uY2UgaXMgYmVjb21lcyBhdmFpbGFibGUg
aW4gdGhlIEFQSQotICAgIENHSW1hZ2VEZXN0aW5hdGlvblJlZiBkZXN0aW5hdGlvbiA9IENHSW1h
Z2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEsIENGU1RSKCJwdWJsaWMudGlmZiIpLCBu
dW1GcmFtZXMsIDApOwotICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAg
ICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmICghY2dJ
bWFnZSkgewotICAgICAgICAgICAgQ0ZSZWxlYXNlKGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAg
IHJldHVybiAwOyAgICAKLSAgICAgICAgfQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShkZXN0aW5hdGlvbiwgY2dJbWFnZSwgMCk7Ci0gICAgfQotICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uKTsKLSAgICBDRlJlbGVhc2UoZGVzdGluYXRpb24pOwot
Ci0gICAgbV90aWZmUmVwID0gZGF0YTsKLSAgICByZXR1cm4gbV90aWZmUmVwOwotfQotCi1OU0lt
YWdlKiBJbWFnZTo6Z2V0TlNJbWFnZSgpCi17Ci0gICAgaWYgKG1fbnNJbWFnZSkKLSAgICAgICAg
cmV0dXJuIG1fbnNJbWFnZTsKLQotICAgIENGRGF0YVJlZiBkYXRhID0gZ2V0VElGRlJlcHJlc2Vu
dGF0aW9uKCk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBt
X25zSW1hZ2UgPSBIYXJkUmV0YWluV2l0aE5TUmVsZWFzZShbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoRGF0YTooTlNEYXRhKilkYXRhXSk7Ci0gICAgcmV0dXJuIG1fbnNJbWFnZTsKLX0KLQotQ0dJ
bWFnZVJlZiBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCi17Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRl
eCgwKTsKLX0KLQotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKLXsKLSAgICBpZiAobV9pc1BERikgewotICAgICAgICBpZiAo
bV9QREZEb2MpCi0gICAgICAgICAgICBtX1BERkRvYy0+ZHJhdyhjdHh0LCBzcmNSZWN0LCBkc3RS
ZWN0LCBjb21wb3NpdGVPcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotICAgIAotICAgIGlm
ICghbV9zb3VyY2UuaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIENH
UmVjdCBmciA9IGN0eHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoc3JjUmVjdCk7Ci0gICAgQ0dSZWN0
IGlyID0gY3R4dC0+cm91bmRUb0RldmljZVBpeGVscyhkc3RSZWN0KTsKLQotICAgIENHSW1hZ2VS
ZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICghaW1hZ2Up
IC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0g
MCkgewotICAgICAgICBpZiAobV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAg
ICBjdHh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
IW1fc29saWRDb2xvci5oYXNBbHBoYSgpICYmIGNvbXBvc2l0ZU9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogY29tcG9zaXRlT3ApOwotICAgICAgICAgICAgY3R4dC0+
ZmlsbFJlY3QoaXIsIG1fc29saWRDb2xvcik7Ci0gICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gY3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY3R4dC0+c2F2ZSgpOwotCi0g
ICAgLy8gR2V0IHRoZSBoZWlnaHQgKGluIGFkanVzdGVkLCBpLmUuIHNjYWxlZCwgY29vcmRzKSBv
ZiB0aGUgcG9ydGlvbiBvZiB0aGUgaW1hZ2UKLSAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBkZWNv
ZGVkLiAgVGhpcyBjb3VsZCBiZSBsZXNzIHRoYXQgdGhlIGFjdHVhbCBoZWlnaHQuCi0gICAgQ0dT
aXplIHNlbGZTaXplID0gc2l6ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVsbCBp
bWFnZSBzaXplLCBpbiBwaXhlbHMKLSAgICBmbG9hdCBjdXJIZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKTsgICAgICAgICAvLyBoZWlnaHQgb2YgbG9hZGVkIHBvcnRpb24sIGluIHBpeGVs
cwotICAgIAotICAgIENHU2l6ZSBhZGp1c3RlZFNpemUgPSBzZWxmU2l6ZTsKLSAgICBpZiAoY3Vy
SGVpZ2h0IDwgc2VsZlNpemUuaGVpZ2h0KSB7Ci0gICAgICAgIGFkanVzdGVkU2l6ZS5oZWlnaHQg
Kj0gY3VySGVpZ2h0IC8gc2VsZlNpemUuaGVpZ2h0OwotCi0gICAgICAgIC8vIElzIHRoZSBhbW91
bnQgb2YgYXZhaWxhYmxlIGJhbmRzIGxlc3MgdGhhbiB3aGF0IHdlIG5lZWQgdG8gZHJhdz8gIElm
IHNvLAotICAgICAgICAvLyB3ZSBtYXkgaGF2ZSB0byBjbGlwICdmcicgaWYgaXQgZ29lcyBvdXRz
aWRlIHRoZSBhdmFpbGFibGUgYm91bmRzLgotICAgICAgICBpZiAoQ0dSZWN0R2V0TWF4WShmcikg
PiBhZGp1c3RlZFNpemUuaGVpZ2h0KSB7Ci0gICAgICAgICAgICBmbG9hdCBmckhlaWdodCA9IGFk
anVzdGVkU2l6ZS5oZWlnaHQgLSBmci5vcmlnaW4ueTsgLy8gY2xpcCBmciB0byBhdmFpbGFibGUg
Ym91bmRzCi0gICAgICAgICAgICBpZiAoZnJIZWlnaHQgPD0gMCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xp
cHBlZCBvdXQgZW50aXJlbHkKLSAgICAgICAgICAgIGlyLnNpemUuaGVpZ2h0ICo9IChmckhlaWdo
dCAvIGZyLnNpemUuaGVpZ2h0KTsgICAgLy8gc2NhbGUgaXIgcHJvcG9ydGlvbmFsbHkgdG8gZnIK
LSAgICAgICAgICAgIGZyLnNpemUuaGVpZ2h0ID0gZnJIZWlnaHQ7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBGbGlwIHRoZSBjb29yZHMuCi0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbXBvc2l0ZU9wKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgaXIu
b3JpZ2luLngsIGlyLm9yaWdpbi55KTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAx
LCAtMSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1pci5zaXplLmhl
aWdodCk7Ci0gICAgCi0gICAgLy8gVHJhbnNsYXRlZCB0byBvcmlnaW4sIG5vdyBkcmF3IGF0IDAs
MC4KLSAgICBpci5vcmlnaW4ueCA9IGlyLm9yaWdpbi55ID0gMDsKLSAgICAKLSAgICAvLyBJZiB3
ZSdyZSBkcmF3aW5nIGEgc3ViIHBvcnRpb24gb2YgdGhlIGltYWdlIHRoZW4gY3JlYXRlCi0gICAg
Ly8gYSBpbWFnZSBmb3IgdGhlIHN1YiBwb3J0aW9uIGFuZCBkcmF3IHRoYXQuCi0gICAgLy8gVGVz
dCB1c2luZyBleGFtcGxlIHNpdGUgYXQgaHR0cDovL3d3dy5tZXllcndlYi5jb20vZXJpYy9jc3Mv
ZWRnZS9jb21wbGV4c3BpcmFsL2RlbW8uaHRtbAotICAgIGlmIChmci5zaXplLndpZHRoICE9IGFk
anVzdGVkU2l6ZS53aWR0aCB8fCBmci5zaXplLmhlaWdodCAhPSBhZGp1c3RlZFNpemUuaGVpZ2h0
KSB7Ci0gICAgICAgIC8vIENvbnZlcnQgZnQgdG8gaW1hZ2UgcGl4ZWwgY29vcmRzOgotICAgICAg
ICBmbG9hdCB4c2NhbGUgPSBhZGp1c3RlZFNpemUud2lkdGggLyBzZWxmU2l6ZS53aWR0aDsKLSAg
ICAgICAgZmxvYXQgeXNjYWxlID0gYWRqdXN0ZWRTaXplLmhlaWdodCAvIGN1ckhlaWdodDsgICAg
IC8vIHllcywgY3VySGVpZ2h0LCBub3Qgc2VsZlNpemUuaGVpZ2h0IQotICAgICAgICBmci5vcmln
aW4ueCAvPSB4c2NhbGU7Ci0gICAgICAgIGZyLm9yaWdpbi55IC89IHlzY2FsZTsKLSAgICAgICAg
ZnIuc2l6ZS53aWR0aCAvPSB4c2NhbGU7Ci0gICAgICAgIGZyLnNpemUuaGVpZ2h0IC89IHlzY2Fs
ZTsKLSAgICAgICAgCi0gICAgICAgIGltYWdlID0gQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVj
dChpbWFnZSwgZnIpOwotICAgICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LCBpciwgaW1hZ2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGlt
YWdlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSAvLyBEcmF3IHRoZSB3aG9sZSBpbWFnZS4KLSAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGlyLCBpbWFnZSk7Ci0KLSAgICBjdHh0
LT5yZXN0b3JlKCk7Ci0gICAgCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotfQotCi1zdGF0aWMg
dm9pZCBkcmF3UGF0dGVybih2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAg
ICBJbWFnZSogZGF0YSA9IChJbWFnZSopaW5mbzsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZGF0
YS0+ZnJhbWVBdEluZGV4KGRhdGEtPmN1cnJlbnRGcmFtZSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dChjb250
ZXh0KS5yb3VuZFRvRGV2aWNlUGl4ZWxzKEZsb2F0UmVjdAotICAgICAgICAoMCwgZGF0YS0+c2l6
ZSgpLmhlaWdodCgpIC0gaCwgdywgaCkpLCBpbWFnZSk7ICAgIAotfQotCi1zdGF0aWMgY29uc3Qg
Q0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuLCBO
VUxMIH07Ci0KLXZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQoteyAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAo
bV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNB
bHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3Ap
OwotICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZGVzdFJlY3QsIG1fc29saWRDb2xvcik7Ci0g
ICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENHUG9pbnQgc2NhbGVkUG9pbnQgPSBzcmNQb2ludDsKLSAgICBDR1NpemUg
aW50cmluc2ljVGlsZVNpemUgPSBzaXplKCk7Ci0gICAgQ0dTaXplIHNjYWxlZFRpbGVTaXplID0g
aW50cmluc2ljVGlsZVNpemU7Ci0KLSAgICAvLyBJZiB0aWxlU2l6ZSBpcyBub3QgZXF1YWwgdG8g
dGhlIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSwgc2V0IHBhdHRlcm5UcmFuc2Zvcm0KLSAg
ICAvLyB0byB0aGUgYXBwcm9wcmlhdGUgc2NhbGFyIG1hdHJpeCwgc2NhbGUgdGhlIHNvdXJjZSBw
b2ludCwgYW5kIHNldCB0aGUgc2l6ZSBvZiB0aGUKLSAgICAvLyBzY2FsZWQgdGlsZS4gCi0gICAg
ZmxvYXQgc2NhbGVYID0gMS4wOwotICAgIGZsb2F0IHNjYWxlWSA9IDEuMDsKLSAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsK
LSAgICBpZiAodGlsZVNpemUud2lkdGgoKSAhPSBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCB8fCB0
aWxlU2l6ZS5oZWlnaHQoKSAhPSBpbnRyaW5zaWNUaWxlU2l6ZS5oZWlnaHQpIHsKLSAgICAgICAg
c2NhbGVYID0gdGlsZVNpemUud2lkdGgoKSAvIGludHJpbnNpY1RpbGVTaXplLndpZHRoOwotICAg
ICAgICBzY2FsZVkgPSB0aWxlU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXplLmhlaWdo
dDsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxl
KHNjYWxlWCwgc2NhbGVZKTsKLSAgICAgICAgc2NhbGVkVGlsZVNpemUgPSB0aWxlU2l6ZTsKLSAg
ICB9Ci0KLSAgICAvLyBDaGVjayBhbmQgc2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdl
IGNhbiBjb3ZlciB0aGUgZW50aXJlIGFyZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAg
TlNSZWN0IG9uZVRpbGVSZWN0OwotICAgIG9uZVRpbGVSZWN0Lm9yaWdpbi54ID0gZGVzdFJlY3Qu
eCgpICsgZm1vZGYoZm1vZGYoLXNjYWxlZFBvaW50LngsIHNjYWxlZFRpbGVTaXplLndpZHRoKSAt
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFRpbGVTaXplLndpZHRoLCBzY2Fs
ZWRUaWxlU2l6ZS53aWR0aCk7Ci0gICAgb25lVGlsZVJlY3Qub3JpZ2luLnkgPSBkZXN0UmVjdC55
KCkgKyBmbW9kZihmbW9kZigtc2NhbGVkUG9pbnQueSwgc2NhbGVkVGlsZVNpemUuaGVpZ2h0KSAt
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFRpbGVTaXplLmhlaWdodCwgc2Nh
bGVkVGlsZVNpemUuaGVpZ2h0KTsKLSAgICBvbmVUaWxlUmVjdC5zaXplLndpZHRoID0gc2NhbGVk
VGlsZVNpemUud2lkdGg7Ci0gICAgb25lVGlsZVJlY3Quc2l6ZS5oZWlnaHQgPSBzY2FsZWRUaWxl
U2l6ZS5oZWlnaHQ7Ci0KLSAgICAvLyBJZiB0aGUgc2luZ2xlIGltYWdlIGRyYXcgY292ZXJzIHRo
ZSB3aG9sZSBhcmVhLCB0aGVuIGp1c3QgZHJhdyBvbmNlLgotICAgIGlmIChOU0NvbnRhaW5zUmVj
dChvbmVUaWxlUmVjdCwgZGVzdFJlY3QpKSB7Ci0gICAgICAgIENHUmVjdCBmcm9tUmVjdDsKLSAg
ICAgICAgZnJvbVJlY3Qub3JpZ2luLnggPSAoZGVzdFJlY3QueCgpIC0gb25lVGlsZVJlY3Qub3Jp
Z2luLngpIC8gc2NhbGVYOwotICAgICAgICBmcm9tUmVjdC5vcmlnaW4ueSA9IChkZXN0UmVjdC55
KCkgLSBvbmVUaWxlUmVjdC5vcmlnaW4ueSkgLyBzY2FsZVk7Ci0gICAgICAgIGZyb21SZWN0LnNp
emUud2lkdGggPSBkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGVYOwotICAgICAgICBmcm9tUmVjdC5z
aXplLmhlaWdodCA9IGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGVZOwotCi0gICAgICAgIGRyYXco
Y3R4dCwgZGVzdFJlY3QsIGZyb21SZWN0LCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBDR1BhdHRlcm5SZWYgcGF0dGVybiA9IENHUGF0dGVybkNyZWF0ZSh0aGlzLCBDR1JlY3RN
YWtlKDAsIDAsIGludHJpbnNpY1RpbGVTaXplLndpZHRoLCBpbnRyaW5zaWNUaWxlU2l6ZS5oZWln
aHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5U
cmFuc2Zvcm0sIGludHJpbnNpY1RpbGVTaXplLndpZHRoLCBpbnRyaW5zaWNUaWxlU2l6ZS5oZWln
aHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKLSAgICAK
LSAgICBpZiAocGF0dGVybikgewotICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQt
PnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgICAgIGN0eHQtPnNhdmUoKTsKLQotICAgICAgICB3
a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNlKGNvbnRleHQsIENHUG9pbnRNYWtlKG9uZVRpbGVS
ZWN0Lm9yaWdpbi54LCBvbmVUaWxlUmVjdC5vcmlnaW4ueSkpOwotCi0gICAgICAgIENHQ29sb3JT
cGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwot
ICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2Up
OwotICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0KLSAgICAgICAg
Q0dGbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVy
bihjb250ZXh0LCBwYXR0ZXJuLCAmcGF0dGVybkFscGhhKTsKLQotICAgICAgICBjdHh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24ob3ApOwotCi0gICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRl
eHQsIGRlc3RSZWN0KTsKLQotICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0KLSAgICAgICAgQ0dQ
YXR0ZXJuUmVsZWFzZShwYXR0ZXJuKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhcnRBbmltYXRpb24o
KTsKLX0KLQotLy8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVh
bGx5LCBzaW5jZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3Mu
Ci12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQoteyAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9p
c1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAobV9zb2xp
ZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0gICAgICAg
ICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNBbHBoYSgp
ICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwotICAg
ICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZHN0UmVjdCwgbV9zb2xpZENvbG9yKTsKLSAgICAgICAg
ICAgIGN0eHQtPnJlc3RvcmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY3R4dC0+c2F2ZSgpOwotCi0gICAgQ0dTaXplIHRpbGVTaXplID0gc3JjUmVjdC5zaXpl
KCk7Ci0gICAgQ0dSZWN0IGlyID0gZHN0UmVjdDsKLSAgICBDR1JlY3QgZnIgPSBzcmNSZWN0Owot
Ci0gICAgLy8gTm93IHNjYWxlIHRoZSBzbGljZSBpbiB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9u
IHVzaW5nIGFuIGFmZmluZSB0cmFuc2Zvcm0gdGhhdCB3ZSB3aWxsIHBhc3MgaW50bwotICAgIC8v
IHRoZSBwYXR0ZXJuLgotICAgIGZsb2F0IHNjYWxlWCA9IDEuMGYsIHNjYWxlWSA9IDEuMGY7Ci0K
LSAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKQotICAgICAgICBzY2FsZVggPSBp
ci5zaXplLndpZHRoIC8gZnIuc2l6ZS53aWR0aDsKLSAgICBpZiAodlJ1bGUgPT0gSW1hZ2U6OlN0
cmV0Y2hUaWxlKQotICAgICAgICBzY2FsZVkgPSBpci5zaXplLmhlaWdodCAvIGZyLnNpemUuaGVp
Z2h0OwotICAgIAotICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAg
c2NhbGVYID0gc2NhbGVZOwotICAgIGlmICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAg
ICAgICAgc2NhbGVZID0gc2NhbGVYOwotICAgICAgICAKLSAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6
OlJvdW5kVGlsZSkgewotICAgICAgICAvLyBDb21wbGljYXRlZCBtYXRoIGVuc3Vlcy4KLSAgICAg
ICAgZmxvYXQgaW1hZ2VXaWR0aCA9IGZyLnNpemUud2lkdGggKiBzY2FsZVk7Ci0gICAgICAgIGZs
b2F0IG5ld1dpZHRoID0gaXIuc2l6ZS53aWR0aCAvIGNlaWxmKGlyLnNpemUud2lkdGggLyBpbWFn
ZVdpZHRoKTsKLSAgICAgICAgc2NhbGVYID0gbmV3V2lkdGggLyBmci5zaXplLndpZHRoOwotICAg
IH0KLSAgICAKLSAgICBpZiAodlJ1bGUgPT0gSW1hZ2U6OlJvdW5kVGlsZSkgewotICAgICAgICAv
LyBNb3JlIGNvbXBsaWNhdGVkIG1hdGggZW5zdWVzLgotICAgICAgICBmbG9hdCBpbWFnZUhlaWdo
dCA9IGZyLnNpemUuaGVpZ2h0ICogc2NhbGVYOwotICAgICAgICBmbG9hdCBuZXdIZWlnaHQgPSBp
ci5zaXplLmhlaWdodCAvIGNlaWxmKGlyLnNpemUuaGVpZ2h0IC8gaW1hZ2VIZWlnaHQpOwotICAg
ICAgICBzY2FsZVkgPSBuZXdIZWlnaHQgLyBmci5zaXplLmhlaWdodDsKLSAgICB9Ci0gICAgCi0g
ICAgQ0dBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3Jt
TWFrZVNjYWxlKHNjYWxlWCwgc2NhbGVZKTsKLQotICAgIC8vIFBvc3NpYmxlIG9wdGltaXphdGlv
bjogIFdlIG1heSB3YW50IHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgICAgCi0gICAgQ0dQYXR0
ZXJuUmVmIHBhdHRlcm4gPSBDR1BhdHRlcm5DcmVhdGUodGhpcywgQ0dSZWN0TWFrZShmci5vcmln
aW4ueCwgZnIub3JpZ2luLnksIHRpbGVTaXplLndpZHRoLCB0aWxlU2l6ZS5oZWlnaHQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0s
IHRpbGVTaXplLndpZHRoLCB0aWxlU2l6ZS5oZWlnaHQsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRy
dWUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKLSAgICBpZiAocGF0dGVybikgewotICAgICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIAotICAgICAg
ICAvLyBXZSB3YW50IHRvIGNvbnN0cnVjdCB0aGUgcGhhc2Ugc3VjaCB0aGF0IHRoZSBwYXR0ZXJu
IGlzIGNlbnRlcmVkICh3aGVuIHN0cmV0Y2ggaXMgbm90Ci0gICAgICAgIC8vIHNldCBmb3IgYSBw
YXJ0aWN1bGFyIHJ1bGUpLgotICAgICAgICBmbG9hdCBoUGhhc2UgPSBzY2FsZVggKiBmci5vcmln
aW4ueDsKLSAgICAgICAgZmxvYXQgdlBoYXNlID0gc2NhbGVZICogKHRpbGVTaXplLmhlaWdodCAt
IGZyLm9yaWdpbi55KTsKLSAgICAgICAgaWYgKGhSdWxlID09IEltYWdlOjpSZXBlYXRUaWxlKQot
ICAgICAgICAgICAgaFBoYXNlIC09IGZtb2RmKGlyLnNpemUud2lkdGgsIHNjYWxlWCAqIHRpbGVT
aXplLndpZHRoKSAvIDIuMGY7Ci0gICAgICAgIGlmICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGls
ZSkKLSAgICAgICAgICAgIHZQaGFzZSAtPSBmbW9kZihpci5zaXplLmhlaWdodCwgc2NhbGVZICog
dGlsZVNpemUuaGVpZ2h0KSAvIDIuMGY7Ci0gICAgICAgIAotICAgICAgICB3a1NldFBhdHRlcm5Q
aGFzZUluVXNlclNwYWNlKGNvbnRleHQsIENHUG9pbnRNYWtlKGlyLm9yaWdpbi54IC0gaFBoYXNl
LCBpci5vcmlnaW4ueSAtIHZQaGFzZSkpOwotCi0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBwYXR0
ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwotICAgICAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2UpOwotICAgICAgICBD
R0NvbG9yU3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0KLSAgICAgICAgQ0dGbG9hdCBwYXR0
ZXJuQWxwaGEgPSAxOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjb250ZXh0LCBw
YXR0ZXJuLCAmcGF0dGVybkFscGhhKTsKLQotICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24ob3ApOwotICAgICAgICAKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwg
aXIpOwotCi0gICAgICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVybik7Ci0gICAgfQotCi0gICAg
Y3R4dC0+cmVzdG9yZSgpOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLX0KLQotfQpJbmRleDog
cGxhdGZvcm0vbWFjL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9t
YWMvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxNTg2NykKKysrIHBsYXRmb3JtL21hYy9Q
REZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDExIEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCisjaWZuZGVmIFBERkRvY3VtZW50SW1hZ2VfaAorI2RlZmluZSBQ
REZEb2N1bWVudEltYWdlX2gKKworI2luY2x1ZGUgIkltYWdlLmgiCisKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAKQEAgLTMyLDE2ICszNywyMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKLSAg
ICBjbGFzcyBQREZEb2N1bWVudEltYWdlIHsKKyAgICBjbGFzcyBQREZEb2N1bWVudEltYWdlIDog
cHVibGljIEltYWdlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBERkRvY3VtZW50SW1hZ2UoQ0ZE
YXRhUmVmKTsKKyAgICAgICAgUERGRG9jdW1lbnRJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVy
Kik7CiAgICAgICAgIH5QREZEb2N1bWVudEltYWdlKCk7Ci0KLSAgICAgICAgRmxvYXRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQm94LnNpemUoKTsgfQotICAgICAgICB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yKSBjb25zdDsKKyAgICAgICAgCisgICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBz
ZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50IHBhZ2UpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAg
ICAgICAKKyAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOworCisgICAgICAg
IHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50KTsKICAgICAgICAgaW50IHBhZ2VDb3VudCgpIGNvbnN0
OwogICAgICAgICB2b2lkIGFkanVzdENUTShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKIApAQCAt
NTEsNSArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG1fcm90YXRp
b247CiAgICAgICAgIGludCBtX2N1cnJlbnRQYWdlOwogICAgIH07Ci0KIH0KKworI2VuZGlmCklu
ZGV4OiBwbGF0Zm9ybS9tYWMvUERGRG9jdW1lbnRJbWFnZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0
Zm9ybS9tYWMvUERGRG9jdW1lbnRJbWFnZS5tbQkocmV2aXNpb24gMTU4NjcpCisrKyBwbGF0Zm9y
bS9tYWMvUERGRG9jdW1lbnRJbWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDEy
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUERGRG9j
dW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZShDRkRhdGFSZWYgZGF0YSkKK1BERkRvY3VtZW50
SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogb2JzZXJ2ZXIp
CisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fZG9jdW1lbnQoMCkKKyAgICAsIG1fcm90
YXRpb24oMGYpCisgICAgLCBtX2N1cnJlbnRQYWdlKC0xKQogewotICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aENGRGF0YShkYXRhKTsKLSAgICAgICAgbV9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyKTsKLSAgICAgICAgQ0dEYXRhUHJvdmlkZXJS
ZWxlYXNlKGRhdGFQcm92aWRlcik7Ci0gICAgfQotICAgIG1fY3VycmVudFBhZ2UgPSAtMTsKLSAg
ICBzZXRDdXJyZW50UGFnZSgwKTsKIH0KIAogUERGRG9jdW1lbnRJbWFnZTo6flBERkRvY3VtZW50
SW1hZ2UoKQpAQCAtMTA0LDcgKzEwMSwyOCBAQCBpbnQgUERGRG9jdW1lbnRJbWFnZTo6cGFnZUNv
dW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudCA/IENHUERGRG9jdW1lbnRHZXROdW1i
ZXJPZlBhZ2VzKG1fZG9jdW1lbnQpIDogMDsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAorYm9v
bCBQREZEb2N1bWVudEltYWdlOjppc1NpemVBdmFpbGFibGUoKQoreworICAgIHJldHVybiBtX2Rv
Y3VtZW50OworfQorCitJbnRTaXplIFBERkRvY3VtZW50SW1hZ2U6OnNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBJbnRTaXplKChpbnQpbV9tZWRpYUJveC5zaXplKCkud2lkdGgoKSwgKGludClt
X21lZGlhQm94LnNpemUoKS5oZWlnaHQoKSk7Cit9CisKK2Jvb2wgUERGRG9jdW1lbnRJbWFnZTo6
c2V0TmF0aXZlRGF0YShOYXRpdmVCeXRlUHRyIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
eworICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fZG9jdW1lbnQgJiYgZGF0YSkgeworICAg
ICAgICBDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhDRkRhdGEoZGF0YSk7CisgICAgICAgIG1fZG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3Jl
YXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlcik7CisgICAgICAgIENHRGF0YVByb3ZpZGVyUmVs
ZWFzZShkYXRhUHJvdmlkZXIpOworICAgICAgICBzZXRDdXJyZW50UGFnZSgwKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fZG9jdW1lbnQ7IC8vIHJldHVybiB0cnVlIGlmIHNpemUgaXMgYXZhaWxhYmxl
Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgbV9jdXJyZW50
UGFnZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAx
NTg2NykKKysrIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
QEAgLTQyNiw3ICs0MjcsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpjYWxjTWluTWF4V2lkdGgoKQog
CiBJbWFnZSogUmVuZGVySW1hZ2U6Om51bGxJbWFnZSgpCiB7Ci0gICAgc3RhdGljIEltYWdlIHNo
YXJlZE51bGxJbWFnZTsKKyAgICBzdGF0aWMgQml0bWFwSW1hZ2Ugc2hhcmVkTnVsbEltYWdlOwog
ICAgIHJldHVybiAmc2hhcmVkTnVsbEltYWdlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10035</attachid>
            <date>2006-08-14 21:54:43 -0700</date>
            <delta_ts>2006-12-27 23:26:44 -0800</delta_ts>
            <desc>image showing my hack-and-slash demo patch in action</desc>
            <filename>pastedGraphic.png</filename>
            <type>image/png</type>
            <size>46350</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">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
zzq8QQTg+mL4rgG3vQ7nXn0TqamphEMhXn9rAQ8+8gQAOdlZTDrJfDBKbmqM8ruu4V87FURERESO
hH/LmRGnighc1xVe2Qe9c2Cn0YE+vXuy5NMVRMJhOnfuSEnJXn47BG5czWGcckvPFsDl+6Bj584A
FJfs5bRJE1i/YRNdjH1srw5xWsdaHiqBnMojNBPypaAzIyIi7fNvDyMWAzNobM6GDzvA/ij0MODE
/ZBdD+n/ht+fq49CbSq8nw+b06ADcEIV9N1zcP5EElEYERFpn8DCiMiXhcKIiEj7/FvajIiIiIj4
URgRERGRQCmMiIiISKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIY
ERERkUApjIiIiEigFEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBER
EZFAKYyIiIhIoBRGREREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGR
QCmMiIiISKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUAp
jIiIiEigFEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyI
iIhIoBRGREREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiI
SKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEig
FEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhIoBRG
REREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiISKAURkRE
RCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEigFEZEREQk
UAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhIoBRGREREJFAK
IyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiISKAURkRERCRQCiMi
IiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEigFEZEREQkUAojIiIi
EiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhIoBRGREREJFAKIyIiIhIo
hREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiISKAURkRERCRQCiMiIiISKIUR
ERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEigFEZEREQkUAojIiIiEiiFERER
EQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhIoBRGREREJFAKIyIiIhIohREREREJ
VDSZnkIYR3o+RERE5L9UwjBiKIeIiIjIEaTLNCIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIi
IiKBUhgRERGRQCmMiIiISKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIi
gVIYERERkUApjIiIiEigFEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFS
GBEREZFAKYyIiIhIoBRGREREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgR
ERGRQCmMiIiISKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERER
kUApjIiIiEigFEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFA
KYyIiIhIoBRGREREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmM
iIiISKAURkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiI
iEigFEZEREQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhI
oBRGREREJFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiISKAU
RkRERCRQCiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEigFEZE
REQkUAojIiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAKYyIiIhIoBRGRERE
JFAKIyIiIhIohREREREJlMKIiIiIBEphRERERAKlMCIiIiKBUhgRERGRQCmMiIiISKAURkRERCRQ
CiMiIiISKIURERERCZTCiIiIiARKYUREREQCpTAiIiIigVIYERERkUApjIiIiEigFEZEREQkUAoj
IiIiEiiFEREREQmUwoiIiIgESmFEREREAqUwIiIiIoFSGBEREZFAha6//nrjkAYMhTAMw34dCoUA
WnRLNHy87oZh2K+tacUbxuuzcLh11nKOM5n5iTdMssMfCvfyeq1Xq5vV3fne2T0WiyWcP7/16zde
97wkK9ltmmgaftvPa1/w2n7u6Seaj3A43Gp9JzOv7nXnXp9+29hvnR8uyaz7f/e0rWW2Pvc7BqD1
enNvH3c/bn7b4XCvd+eyuLt79evVv3O9eA3j95nFOv7d4/SbL/e6bes6idd/onLscHCXMV7Ti/f+
UMTbp+NtN79u7dnm7m2b7L7nJ17/zuOmveVX6MMPP7SHSrbgd08wmQI1mcrQ2V+i8JFMReKufLz6
9eonmffJhplkCrl46yxRZebsHovFWk3Tq1CPN454gqq8/IJLokAQb//wCyiJxm+JF3S9tGUbJ5Js
4I/X3+EMgvEKxWQlU+n5hQ33fp7M+kl0XHgFnPbs//EqhHghoS0VWbKVk183Z3evaSUTtv26HUr/
7Q0pyYaReMMnM75E4/TaNsluw/asr2T6O1xBMJn5TLRfRLds2ZKwok4mjLgr3bYU7E5WIe8OG17v
3f15zWOy3ZLZKPHSfKIKvq3jjzevyVbCzvlyVp7Jbme/aSWav3gSFQpWBeC1DPEKw2T21Xjj9Kvo
nPMZbxsm+twdRpIJSsl289rG7v7iLbvfcPHG5xSvgPaSTKXpV1F6DeNXgcc7Xt3d3MM6x5lsQetX
yDu/KMSbH/d0/bp5LVeiytAdrPy+qPiVs34Odxjx22Z+6yXRsXko2y5e/34hMVEYTDSNZOc1WfGC
tbvcS6b+9DsWneNxl3HJLovVPZpMT8kW8F7jSjaUxKqL+aIkwoD+XYi4+nX/Hw6HW5wFSOabX7yC
LdFn8ZYx3jo6lO6Jhon3mde6TyYEJioY481nW8JHvPd+//t95hdCvMKFX8UWr2DxCtfWPuf3eTIS
BYd444oXbBOFlXj8tr+7AvWaVqKKINnj3z2eRPudV7hzbs9kjn+v7e+sONwhwq9/v/H7LVs8yVYO
yXyW7D7pVxYmU4EmGl9btn8ifsd/MsE13vt4QdFv33B/nkyYSbR/J1uX+B3/iereRPMXr7vf+nOe
PEimXoy3bNE272yNm/nDrb9lrd0hl/HnX8a5EweTTh2vffc2Gr73M87um91qYvHSUkPJh9z3yyj/
+8BkMkn+zIjXtz53d+fn7krAq0KNF4L8uD/z2xjxNnAyBXIyB/OhVj5tlexB8f9bOffoqqsrj39+
95kQIDwqgSoKgmCnxcrLeSyly4UEha5aWjvO9EkC6pLqWGpbyhocakcHq12lTos6trq0Uh9lqZWK
S0qt1K7KGikNQaI8goBAXoRwE8jr3pvc+ePyg5PDPo9fnP1Hfvntc87e+5y9z97f3+uq/V1XqxLI
NQHfsE09hn7QfR6Ol2JK8r8prkznJv9LpBZPKT5cfpeAmAs46jr+P2JAT7J6sjQlMFuyD48+BSbU
qa+nydeqjaoeybchYLTdUbSRWuB0oBQepflEeb9Dl+dLLiBuOzfJ0efg298Wi641UP0n7Qm1T0hS
jnXlf9NYG5ni2lXgfdbfxwZXHo4iS+qnAzPX3ECOi0KhQFNTExUVFSRsBTakAROLjyJPBY9sfoWr
yvs4tuc1blx8P82x7/Ktz0xm6Wuvkcw0cLit5zwZNoqNvAgoMDyZJMAfjNhk+yQPGxrVF1R6EdQW
9FKgm2yTikmU5Kdexek2qbKjFC1dlqktChCSioHeHgWM2GzxaYvif5uPTP6XbAkLnT5el2nSYwIj
PnOTYsLkYx/gKB1tY3z4UcCI1N/mU5NOk/+l4qeSj/99ipht7irPBvBsbep4Hbj5roVOtqLtmqeL
p/Nd9kaNNbXdlFt8wbBqn8q3gXNpr/isjQ286QBYv5Mbjo3FYuKedwFPndQap+clqb+ENZqamti1
axcLFiwgkUqlnEVlwML1dxNQTubDOv4WBAwdeQ3Pr7iaf/nRu5y+/mJevfdb5BbeyWc+Xsq+Pz7J
Q89tA+BL9/yM+ZfAW48+TN2oMRzY8jYZLuTrK7/NnEnl5LuLxifSaY6/8wL3PL4FgMnzbufbN0/m
96v/k+TXVjN/0lCCoJUXVj/B5ctXMG34uSBo2v6bc+Ouu53lN88gNWDq3fz5sf9mf8VE3n9tCxlm
snzVHP73vrW8DSz8twdZdMUo8pl6nr7vAbZlivrvunkmpdnDPHr/y1TMHs6m374NFy7kvlVfYFyq
izfWPsv425cytRSOvvEIG3ILWH79BGsBtRUcm/N8kLyUCHWe5F8XL8ocTIFtAyM28ORKNrbCapPp
m3hNbYNJ4BIY0fvobVGBmM2X+tE3zky2mEBP1AJhSp56uy5LAiNSbOn/D6aA2Qq+ZBdEv6J27QHT
HjL53xTn0h7Qc4UviNJ5UdbWZw2lPpLvXTLB/ljGNMbV12deNjAiyfCNG8n/OuDQfSy9mynJNNmm
x6Ie76a9qlJjYyO1tbXceuuttLa2kujp6TEGuW5YkZcFCvR2tNNR6Kcj08aoSVcDG8i0ZMkd3Ec+
30XHif288Nw21rzyF+aNOM0HB/Zw5GSOIe317NgxjV9t3szpjXewbM0fmPDjuQzrLhp/ur2dIVMX
8uIba7gkv5VZ8/+LvdeuYc78NHe/uYd/GjOV7Id/YcuxOXxl+GlOdp6zb+gn1HFrqK/8BJeWqova
T1l7Pdt2jOfJzZs4uq6K/7hvLSueeoVl9ev46kvvMu/ymWz76QNwx4v89fMJfjDrRv44ay3zx6fJ
H9vNptF38MrmZfx6/lfZdmguN05Kku7tpDTWR18fxFMZmoMS+vr6RKeGPBvKNjnPVSCk5CclHN9i
YuINhmyJ1AYcJJ5pTU1ATRpvAyMgP86z2WADC1I//S6WS5ZUIFRZtuIr2WqbezjeFSd6ktV96fO/
JMdVYCS7TLFrAqeSHVI/aQ9KZCtophg3yZHW0aXXpt8mUwcOErCzzdGHZ7MT7I91JLukfeCKZxv5
5OLByNDbXODUJx5tumz7SvepBCJcskxAUD237V2V19zczM6dO6murqa+vh6ARDKZPG+yupAB/P5u
AOLJNCWxovBT7d1AjKHDUiQB0qWUjrqChVNg5eI7eW/pzVx7WTmlpTF6OuCb62+npKmRYfO/Q8W6
B8nFPkdpsqijdOhQykeVU//6ozy7dy8wgXEjAi6euwye/A2ZJTM5+darVK75NQGdlJWdSzpDRg7n
4O8f5/m97wOXMK68jCEJdTZ5ejpg6VMrGdV2kq6xI6hY+iDXjczS9vGJ8F6OdLqXzFFo/fPj3Lsd
3gGuLRtCSTpHJ1P4xdovkGttZUwFnLpgKOk0xIiRTKVJJyEVCwhiSUpKSoxrKq2x1Ne3UMH5L/Wq
/X03atQN6GufvqFMiB2if02jjrPZpI+X9EjzMCUQl69coFEFNT4FzwYUXX5z7WsfgGuTZwMJ6tFF
esGxFVidr38toNsjrbGraJqu8Ew2mMg1lyjAwabXF+C4ioa6bq75+xYyk3y93eQz07roY3zt873I
ihKDKknyXWMHA1BUfbb3lNRz9XUD1950gV0J1Jj8FB4bGxupq6vjtttuo6WlhVOnTjF27NjinRHV
YJvCIuWLf3u76abY3nmgDriKj9HDAaCQ76GrI83nn9zExc+uY+VDK9h509184x/GQgAn99fw4bA4
tHQAp0j1d9GTL8rq6Wzkd6tv4/WJi1mzaDYvbnyVru5OGkovY2lFHW++/ion/jaDu1bmyDR0K8Wt
g5fvWcqmidX8aNFsNvz2d3T19lCWV+3vIwig99j7NI1Ok8kXINfAB02jyZ3KFbv09NIE/P2cucwe
keT6G29i2NAEvd39QIHmfQcIknm6gP58H7kcFID+XJZsuP6FPnp7e50bTyc9gKOAETUAXIXcC3Ra
bDDZa5NtGqOCE5e9UvFUebqskCTgYQMjkhz1KlJvN8lxFQd9LrounafL1QGNC1jp8m2AyEZSnNhi
3ZXQ9cQoFZ4o8W1aH12nrVD5Fmt1/iaeXhikNdDl61/x+IAnE/kAHH3tTfPy0e8LvFxk8pl+MWOL
f5+8ZttrOknvDZrWSVpbX+ATFaDofBsY0dfQR48LjIR3Z3Xduo6GhgZ2795NdXU1Bw8epLm5mdra
WiorK0mYHieoCXdg8g2AOKT1agAAB6lJREFUdvoKBWIUOHnkHX7+2B+oXPM0ib4TZ7rESQQZ3t5a
YOai7/NUdgeL24aQSiVIl8Oh1k7+8WMX0Fq7hWYqGT88TWe2KD9Z6OH1Jnj4iS8z/thWoJ1USSmp
nl6uWfY5frl6I/zzTxjd3kNrOn3O4O7TbGqEh3/5r1zc8CbQTiIeJx5HoTMLFCsy1RvxwZmm/vQE
5k2Blw/nWTR9MgF5OtpOkssV16mQz5EtFP8nn6W3Nw77a9h+oI3ryvfzsyf2U16dJwR5vghc8kGU
H9ZSN6StkJtkmPzvKprSGN85FQrnf+Iq6XPdxTAVd31z+F5BSV80hH1sBUyXY+rnA0b0Nl8wYgJj
unzdBpcvbfET2iN9UWQCQrZ56f1ca6v7yyeBm84LhcKAxOo6hv/b2lUga9Kv8k1F16fgufKDpEcd
p567coY0TxPPRDbgLe1f0xqa1saXr+9/k3xTm0/sRb3L5PK5xDcBcBcYibL/pXHSBYLOP3r0KHv2
7OGWW26hqamJtrY26urqzp4nysrKRIXGgOrvZgwt3P+9755hTGTZj5/ny5f3sevDJGkgFi8hnWrg
ubu/z70ATGHV45NJ9Z8mWQZb1/2QrQCM4YfPryKZOUIiHkBFksSoaayqrOCuhZUwfjZXV7Sw6rE/
8fCd1zLq8muAjaxYcCEncx1ngUYQBHB23Lxz4/7nLX5+11xKz82kaF+shFQqRjqA8nScVCpFLBFA
RYpUPMa8n/6CvQtu4Yu/Ko764j2P8NlLEsBQSkqHMCSRJ10O+VQJZWWl/N03Z/Cdh77HRj7FvBlw
KEgxbNgw0Yk2chVym7woV442GSG5kpvLPl8den+TvS4w4SruUWWaEqI0D5Nek1xfMGLi2cCIbS5R
bIgizxZ3Ekl8KVm6AERI4ct6tsLsm9R1Gwb7mMZUCGy6Vb024GCy12abr0yd77qAcoHzj9LfZa9p
b/roc/WJ2tdHxmDX0leXC3zYwIhLh+lclWOrGUePHqWuro4lS5Zw/Phxjh8/zq5du1iyZAktLS0k
k0mCl156qWATcl6gJC5g+sxLla9U+sgc+4B9x04CKSbPupLYoRr2ZUYwfcZ4sp29JMpK6DhQx8ET
nbzzgzsp+8kbVE1M0BsvJXOwlkNtWVKjpzL90n5qth/mok9/muFBjnQiIBsUyHW2s++9g5xu3c7y
1V2sf66S9rZezb4Ul543LsO+9w4VX7ktFIAUU66aQexQDXuPZxk9dRYTOcyOfa2kRk/hyon97Pxr
PbnSMXxy2gQKnZ0k0mV0H9nJ/kw5M6ZfxJFdtbRmU0yafgXxI7vZ15ql4rJpjElkoSwN+QSJzsPU
HjgxAF1KYEDnSYXZZ6ypT/i/C4z4AA+dTAnEVQBMm0I9NwEHkx2qXtPVmX571VbAJb7rp8FtvpLa
Q39L41y/hRPap4MR319M9QF3aj8X3xQ/pkLu4psK5Uf5msbn7X51rC7TtVZScrbtVdOeDP3oukrW
49wFAGxgROKH5Hq5NCpA0vXZ+ksxpvNcwNU0zqTHZLdv8Tb5VIolU46T9rquK8redYGRwQAp6Wck
dHAYnh85coTa2lqqqqpoaWmhoaGBmpoaqqqqaG5upqGhgXHjxhE888wzVjCi8m2LJyfnGOl0kv5s
lr4gAPrZ//QD5G76dz45IkWykCOvxXqYUOPxOH19fQRBknSyQG8uy7sv3MuBa9by9fFdnDYUhkQi
ceZLlgSpZIFcfuCimQqoxE8mk/T35egv2K/2ARLJJOTznHmA40xi0gaIEoS2xOIaFwWM2ECM1N/1
aMn0WEZt1xO5nrxtdppj0Q7SXHMzFQPTuWmDu4qK1EfnSX62JWUfwGeyVTq3xY8ERn2SrmSbZLtr
nM1+nXyKuy1Rm2SB+UfPpHZJr/TOiOnXYNXEL/lfAh6+YMQW85K+KH4wxb5kixQTevEzyTDxJD0u
coER6dwXEPmOsfWVAIHu6yhgRNVhW1dVruqP8PPdqqoqGhsbaWpqYufOnWeBSGNjIzU1Ndxwww0E
GzZsKEjKXKRuDjUJmRJG8TzF5JlXEjtcy/4TWVGmVDSLkwu46FMzGNlZT93hDucm0RfK1te1yQba
YS4y0rmtmNv6QvR3Rkx9dN+a5mtaG9+EbLNPbTcBIwl4qDbYZNuAiklXlJjXE7cPeJFkSCAoauzo
NoQypXiR5ijZIPlY2j8S3wYSBkM2YOXT35QopXEmnu29IZMNJrIBK9VOfS5SITbpNcWyXowkPTY5
tmIVZV11vVJ/W/yY5hCOi2Kjj09N8nw+Qw5tcsnS+/oAOx956ljJ/xKgc/nMBJ6kPRbqCoGGegek
pqaG6urqAUBk8eLFNDc3E6xfv/6sFlNCtyVMV7vp6NKjoix1c+rIS5Kj8l2J1NQvKhgZDLmCzxc4
6WOl/wcLimxFXip+Pnc+TO22Yq3639d2sN8JkDaliVxgxEQmH/vYpI/TZepx6VPspP5RwZDertoj
FVZJt6RXHyfNyVRwTWDElGz1BKv3iwpGXHc6XPpVOS7gYNJjstMHjKh8/SVzMOeiweQwvc0GRvR6
IM3Rlpdtj/ZM56psH3k2virbBxR9FKBkGusDRlTyyW16PlbBiWmPm+pQ2Pf/AEo5MFipea4tAAAA
AElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10719</attachid>
            <date>2006-09-23 02:53:40 -0700</date>
            <delta_ts>2006-09-23 03:03:02 -0700</delta_ts>
            <desc>An updated version of my original hack-and-slash patch</desc>
            <filename>svgimage.patch</filename>
            <type>text/plain</type>
            <size>62213</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NTQxKQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNyAr
MzEzLDcgQEAKIAkJNjU4MkExNTgwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UG9pbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0QTA5
OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLzsgfTsKIAkJNjU4MkExNTkwOTk5
OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTRCMDk5OTlENkMwMEJFRUI2RCAvKiBGbG9hdFJl
Y3RNYWMubW0gKi87IH07CiAJCTY1ODJBMTVBMDk5OTlENkQwMEJFRUI2RCAvKiBGbG9hdFNpemVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgy
QTE0QzA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRTaXplTWFjLm1tICovOyB9OwotCQk2NTgyQTE1
QjA5OTk5RDZEMDBCRUVCNkQgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0RDA5OTk5RDZDMDBCRUVCNkQgLyogSW1hZ2VN
YWMubW0gKi87IH07CisJCTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJB
MTREMDk5OTlENkMwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1hYy5tbSAqLzsgfTsKIAkJNjU4MkEx
NUQwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFBvaW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNEYwOTk5OUQ2RDAwQkVFQjZEIC8qIElu
dFBvaW50TWFjLm1tICovOyB9OwogCQk2NTgyQTE1RTA5OTk5RDZEMDBCRUVCNkQgLyogSW50UmVj
dE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
ODJBMTUwMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFjLm1tICovOyB9OwogCQk2NTgyQTE1
RjA5OTk5RDZEMDBCRUVCNkQgLyogSW50U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTUxMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRT
aXplTWFjLm1tICovOyB9OwpAQCAtMTIxMCw2ICsxMjEwLDEwIEBACiAJCUE4MzNDODBDMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3Bw
ICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MzNDODBCMEEyQ0YyNTYw
MEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlBODMzQzg1MjBBMkNGNTI4MDBENTc2NjQg
LyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0
b3J5LmNwcCAqLzsgfTsKKwkJQTgzOTgyNzkwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODM5ODI3
NzBBQzQxNTM5MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuaCAqLzsgfTsKKwkJQTgzOTgyN0EwQUM0
MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Mzk4Mjc4MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJ
bWFnZS5jcHAgKi87IH07CisJCUE4Mzk4MkJFMEFDNDE5NzUwMEQzQjBENCAvKiBTVkdJbWFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzOTgyQkMw
QUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmggKi87IH07CisJCUE4Mzk4MkJGMEFDNDE5NzUw
MEQzQjBENCAvKiBTVkdJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODM5ODJCRDBBQzQxOTc1MDBEM0IwRDQgLyogU1ZHSW1hZ2UuY3BwICov
OyB9OwogCQlBODQxNUY5QTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1RjkxMEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5oICovOyB9OwogCQlBODQxNUY5QjBBQzEwQzVE
MDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVGOTIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXND
bGlwcGVyLmNwcCAqLzsgfTsKIAkJQTg0MTVGOUMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg0MTVGOTMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5oICovOyB9OwpAQCAt
MjAwMSw3ICsyMDA1LDcgQEAKIAkJQkM4MzdDNzIwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9p
bnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzgzN0M2NzBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRQb2ludENHLmNwcCAqLzsgfTsKIAkJQkM4
MzdDNzMwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODM3QzY4MEE5RDBEMUEwMDZCMTg2QSAv
KiBGbG9hdFJlY3RDRy5jcHAgKi87IH07CiAJCUJDODM3Qzc0MEE5RDBEMUEwMDZCMTg2QSAvKiBG
bG9hdFNpemVDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzgzN0M2OTBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9Owot
CQlCQzgzN0M3NTBBOUQwRDFBMDA2QjE4NkEgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgzN0M2QTBBOUQwRDFBMDA2QjE4NkEg
LyogSW1hZ2VDRy5jcHAgKi87IH07CisJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRt
YXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDODM3QzZBMEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsK
IAkJQkM4MzdDNzcwQTlEMEQxQTAwNkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MzdDNkMwQTlEMEQxQTAw
NkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCQzgzN0M3ODBBOUQwRDFBMDA2
QjE4NkEgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzgzN0M2RDBBOUQwRDFBMDA2QjE4NkEgLyogSW50UG9pbnRDRy5jcHAg
Ki87IH07CiAJCUJDODM3Qzc5MEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MzdDNkUwQTlEMEQx
QTAwNkIxODZBIC8qIEludFJlY3RDRy5jcHAgKi87IH07CkBAIC0yNjY5LDcgKzI2NzMsNyBAQAog
CQk2NTgyQTE0QTA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0QjA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRS
ZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0
UmVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4MkExNEMwOTk5OUQ2
QzAwQkVFQjZEIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGbG9hdFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTY1ODJBMTREMDk5OTlENkMwMEJFRUI2RCAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjU4MkExNEQwOTk5OUQ2QzAwQkVFQjZEIC8qIEJpdG1hcEltYWdlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJpdG1hcEltYWdl
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0RjA5OTk5RDZEMDBC
RUVCNkQgLyogSW50UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW50UG9pbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
ODJBMTUwMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJlY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1ODJBMTUxMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRTaXplTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFNpemVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDgwLDYgKzM0ODQsMTAgQEAKIAkJQTgzM0M3
RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzM0M4MEEwQTJD
RjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBYTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTgzOTgyNzcwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBODM5ODI3ODBBQzQxNTM5MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgzOTgyQkMwQUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0lt
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4Mzk4MkJEMEFDNDE5NzUwMEQzQjBENCAvKiBTVkdJ
bWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NDE1RjkxMEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzQ2xpcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
Q2FudmFzQ2xpcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODQxNUY5MjBB
QzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZhc0NsaXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODQxNUY5MzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtDYW52YXNSZXNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQwNyw3ICs0NDE1LDcgQEAKIAkJQkM4MzdDNjcw
QTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM4MzdDNjgwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UmVjdENHLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODM3QzY5MEE5RDBEMUEwMDZCMTg2QSAvKiBGbG9h
dFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRT
aXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzgzN0M2QTBBOUQwRDFB
MDA2QjE4NkEgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODM3QzZB
MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM4MzdDNkMwQTlEMEQxQTAwNkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgzN0M2RDBBOUQwRDFBMDA2QjE4NkEg
LyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODM3QzZFMEE5
RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjQ0LDYgKzUyNTIsNyBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTgyQTE0RDA5
OTk5RDZDMDBCRUVCNkQgLyogQml0bWFwSW1hZ2VNYWMubW0gKi8sCiAJCQkJNjVBNjQwRjAwNTMz
QkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovLAogCQkJCTY1RjgwNjk3MDU0RDlG
ODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi8sCiAJCQkJMkQ5MDY2MEIwNjY1RDkz
NzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovLApAQCAtNTI2Niw3ICs1Mjc1LDYgQEAKIAkJ
CQlCQzZEQjREMzBBMUFGRUVGMDBFNUNEMTQgLyogR2x5cGhNYXBNYWMuY3BwICovLAogCQkJCTkz
NTM2N0U4MDlBRjc3RUYwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCiAJCQkJ
MDY2Qzc3M0QwQUI2MDUzRjAwMjM4Q0M0IC8qIEljb25NYWMubW0gKi8sCi0JCQkJNjU4MkExNEQw
OTk5OUQ2QzAwQkVFQjZEIC8qIEltYWdlTWFjLm1tICovLAogCQkJCTY1ODJBMTRGMDk5OTlENkQw
MEJFRUI2RCAvKiBJbnRQb2ludE1hYy5tbSAqLywKIAkJCQk2NTgyQTE1MDA5OTk5RDZEMDBCRUVC
NkQgLyogSW50UmVjdE1hYy5tbSAqLywKIAkJCQk2NTgyQTE1MTA5OTk5RDZEMDBCRUVCNkQgLyog
SW50U2l6ZU1hYy5tbSAqLywKQEAgLTUyNzQsMTYgKzUyODIsMTcgQEAKIAkJCQk2NTkzOTIzOTA5
QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLywKIAkJCQk5MzUyMDg0NDA5QkQ0M0I5MDBG
MjAzOEQgLyogTGFuZ3VhZ2UubW0gKi8sCiAJCQkJRjU4Nzg1MTQwMkRFMzc1OTAxRUE0MTIyIC8q
IExpc3RCb3hNYWMubW0gKi8sCi0JCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCisJCQkJMDZFODFFRUIwQUI1
REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKIAkJCQk5
MzUyMDdCRjA5QkQ0MTIwMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5nc01hYy5tbSAqLywKIAkJ
CQk2NUY1MzgyNDA5QjJCNTc1MDBGM0RDNEEgLyogbWFjLWVuY29kaW5ncy50eHQgKi8sCiAJCQkJ
OTM1QzQ3NkYwOUFDNEQ3MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudE1hYy5tbSAqLywK
IAkJCQlCQzNGQ0FBODBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCAqLywK
KwkJCQlCQzdCMkFGOTA0NTA4MjQxMDBBODAwMEYgLyogUGxhdGZvcm1TY3JvbGxCYXJNYWMubW0g
Ki8sCiAJCQkJQTgyMzk4QTcwOUIzQUNGNTAwQjYwNjQxIC8qIFBsdWdJbkluZm9TdG9yZU1hYy5t
bSAqLywKIAkJCQlGNTg3ODREMjAyREUzNzU5MDFFQTQxMjIgLyogUG9wVXBCdXR0b25NYWMubW0g
Ki8sCisJCQkJNjU0NUY2NzUwOUI4MzAxODAwMTMwMDZGIC8qIFJlc291cmNlTG9hZGVyTWFjLm1t
ICovLAogCQkJCTY1ODJBMTU0MDk5OTlENkQwMEJFRUI2RCAvKiBTY3JlZW5NYWMubW0gKi8sCi0J
CQkJQkM3QjJBRjkwNDUwODI0MTAwQTgwMDBGIC8qIFBsYXRmb3JtU2Nyb2xsQmFyTWFjLm1tICov
LAogCQkJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxCYXIuY3BwICovLAogCQkJ
CTkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAogCQkJCTkz
MzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5jcHAgKi8sCkBAIC01Mjk0
LDcgKzUzMDMsNiBAQAogCQkJCTY1ODJBMTU1MDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1UaW1l
TWFjLmNwcCAqLywKIAkJCQk5MzUyMDcxQjA5QkQzQkJCMDBGMjAzOEQgLyogVGV4dEJvdW5kYXJp
ZXMubW0gKi8sCiAJCQkJRjU4Nzg1MTIwMkRFMzc1OTAxRUE0MTIyIC8qIFRleHRGaWVsZE1hYy5t
bSAqLywKLQkJCQk2NTQ1RjY3NTA5QjgzMDE4MDAxMzAwNkYgLyogUmVzb3VyY2VMb2FkZXJNYWMu
bW0gKi8sCiAJCQkJRjU1MTdEQzIwMzFBQjU2MzAxQTgwMTgwIC8qIFdlYkNvcmVIaXN0b3J5Lmgg
Ki8sCiAJCQkJRjU1MTdEQzMwMzFBQjU2MzAxQTgwMTgwIC8qIFdlYkNvcmVIaXN0b3J5Lm0gKi8s
CiAJCQkJODRCMkIxRjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCAq
LywKQEAgLTU3NzcsMTMgKzU3ODUsMTMgQEAKIAkJCQlCQzgzN0M2ODBBOUQwRDFBMDA2QjE4NkEg
LyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJCUJDODM3QzY5MEE5RDBEMUEwMDZCMTg2QSAvKiBG
bG9hdFNpemVDRy5jcHAgKi8sCiAJCQkJOTM2QkREMUMwQTAzMUFFQjAwNERGNEFCIC8qIEdyYXBo
aWNzQ29udGV4dENHLmNwcCAqLywKLQkJCQlCQzgzN0M2QTBBOUQwRDFBMDA2QjE4NkEgLyogSW1h
Z2VDRy5jcHAgKi8sCisJCQkJQkM4MzdDQjUwQTlEMTBGRTAwNkIxODZBIC8qIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZS5oICovLAorCQkJCUJDODM3QzZBMEE5RDBEMUEwMDZCMTg2QSAv
KiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQlCQzgzN0M2QzBBOUQwRDFBMDA2QjE4NkEgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJQkM4MzdDNkQwQTlEMEQxQTAwNkIxODZBIC8qIElu
dFBvaW50Q0cuY3BwICovLAogCQkJCUJDODM3QzZFMEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0
Q0cuY3BwICovLAogCQkJCUJDODM3QzZGMEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRTaXplQ0cuY3Bw
ICovLAogCQkJCTkzMDMyQ0M3MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICovLAotCQkJ
CUJDODM3Q0I1MEE5RDEwRkUwMDZCMTg2QSAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUuaCAqLywKIAkJCQlCQzgzN0M3MDBBOUQwRDFBMDA2QjE4NkEgLyogUERGRG9jdW1lbnRJbWFn
ZS5jcHAgKi8sCiAJCQkJQkM4MzdDNzEwQTlEMEQxQTAwNkIxODZBIC8qIFBERkRvY3VtZW50SW1h
Z2UuaCAqLywKIAkJCSk7CkBAIC02ODQyLDkgKzY4NTAsNiBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5
MDA2MUExMjMgLyogcGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKLQkJCQk5MzAz
MkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8sCi0JCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVF
QjZEIC8qIG1hYyAqLywKIAkJCQlBODVEN0E4QzA4NzlFQzY0MDA2QTkxNzIgLyogQWZmaW5lVHJh
bnNmb3JtLmNwcCAqLywKIAkJCQlBODVEN0E4RDA4NzlFQzY0MDA2QTkxNzIgLyogQWZmaW5lVHJh
bnNmb3JtLmggKi8sCiAJCQkJQkNGQjJGNzQwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmNwcCAq
LywKQEAgLTY4NTQsNiArNjg1OSwxMCBAQAogCQkJCTkzQ0Q0RkQ3MDk5NUY5RUEwMDdFQ0M5NyAv
KiBBdG9taWNTdHJpbmcuY3BwICovLAogCQkJCTkzQ0Q0RkQ4MDk5NUY5RUEwMDdFQ0M5NyAvKiBB
dG9taWNTdHJpbmcuaCAqLywKIAkJCQk5M0NENEZEOTA5OTVGOUVBMDA3RUNDOTcgLyogQXRvbWlj
U3RyaW5nSW1wbC5oICovLAorCQkJCUE4Mzk4Mjc4MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJ
bWFnZS5jcHAgKi8sCisJCQkJQTgzOTgyNzcwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdl
LmggKi8sCisJCQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovLAorCQkJCTkzMDMy
Q0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAqLywKIAkJCQk2NUY1MzgyMDA5QjJCNTU3MDBGM0RD
NEEgLyogY2hhcmFjdGVyLXNldHMudHh0ICovLAogCQkJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0
NyAvKiBDaGFyc2V0RGF0YS5oICovLAogCQkJCUJDQzhDRkM4MDk4NkNEMjQwMDE0MEJGMiAvKiBD
b2xvci5jcHAgKi8sCkBAIC02OTIxLDYgKzY5MzAsNyBAQAogCQkJCTkzNTIwN0JEMDlCRDQxMEEw
MEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi8sCiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAw
QjYwNjQxIC8qIExvZ2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAv
KiBMb2dnaW5nLmggKi8sCisJCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZEIC8qIG1hYyAqLywK
IAkJCQk2NUY1MzgyMTA5QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICov
LAogCQkJCUFBOThCODdDMEFBQTAyRjgwMDFBNDRDMiAvKiBQYXRoLmNwcCAqLywKIAkJCQk5MzAz
MkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovLApAQCAtNjk1OSw2ICs2OTY5LDggQEAK
IAkJCQk5MzEyNkY2MDA5RDdBNzM2MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5oICovLAogCQkJCTkz
Q0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQk5M0NENEZE
RDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oICovLAorCQkJCUE4Mzk4MkJEMEFDNDE5
NzUwMEQzQjBENCAvKiBTVkdJbWFnZS5jcHAgKi8sCisJCQkJQTgzOTgyQkMwQUM0MTk3NTAwRDNC
MEQ0IC8qIFNWR0ltYWdlLmggKi8sCiAJCQkJOTNFNjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8qIFN5
c3RlbVRpbWUuaCAqLywKIAkJCQk5MzUyMDcxODA5QkQzQkE1MDBGMjAzOEQgLyogVGV4dEJvdW5k
YXJpZXMuaCAqLywKIAkJCQk5MzJDQTdDNDBBQUEyMEQyMDBBRDFGQUQgLyogVGV4dENvZGVjTGF0
aW4xLmNwcCAqLywKQEAgLTg0NTAsNiArODQ2Miw4IEBACiAJCQkJQTg0MTVGOUUwQUMxMEM1RDAw
RjdEMERGIC8qIEtDYW52YXNNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NDE1RkEwMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNG
Q0FBOTBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE4Mzk4Mjc5MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTgzOTgyQkUwQUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTg4ODUsNyArODg5OSw3IEBACiAJCQkJNjU4MkExNTgwOTk5OUQ2RDAwQkVF
QjZEIC8qIEZsb2F0UG9pbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2NTgyQTE1OTA5OTk5
RDZEMDBCRUVCNkQgLyogRmxvYXRSZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkEx
NUEwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1ODJBMTVEMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRQb2ludE1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTY1ODJBMTVFMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNUYwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFNp
emVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTkzMDMsNyArOTMxNyw3IEBACiAJCQkJQkM4MzdD
NzIwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzgzN0M3MzBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM4MzdDNzQwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBJbWFnZUNHLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFn
ZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc3MEE5RDBEMUEwMDZCMTg2QSAvKiBJ
bWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc4MEE5RDBEMUEwMDZC
MTg2QSAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc5MEE5RDBE
MUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTM4LDYgKzk1
NTIsOCBAQAogCQkJCUE4NDE1RjlGMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4NDE1RkExMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFz
TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NDE1RkEyMEFDMTBDNUQwMEY3RDBERiAv
KiBLQ2FudmFzRmlsdGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODM5ODI3QTBBQzQxNTM5
MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTgzOTgyQkYw
QUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogaHRt
bC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMTY1NDEpCisrKyBodG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsK
LSAgICBjLT50cmFuc2xhdGUodHgsIHR5KTsKKyAgICBjLT50cmFuc2xhdGUoRmxvYXRTaXplKHR4
LCB0eSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29s
b3IoY29uc3QgU3RyaW5nJiBjb2xvcikKSW5kZXg6IGxvYWRlci9DYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gMTY1NDEpCisrKyBsb2FkZXIvQ2FjaGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkWFNM
U3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCiAKQEAgLTg1LDcgKzg1
LDcgQEAgdm9pZCBDYWNoZTo6aW5pdCgpCiAgICAgICAgIGRvY2xvYWRlcnMgPSBuZXcgSGFzaFNl
dDxEb2NMb2FkZXIqPjsKIAogICAgIGlmICghbnVsbEltYWdlKQotICAgICAgICBudWxsSW1hZ2Ug
PSBuZXcgSW1hZ2U7CisgICAgICAgIG51bGxJbWFnZSA9IG5ldyBCaXRtYXBJbWFnZTsKIAogICAg
IGlmICghYnJva2VuSW1hZ2UpCiAgICAgICAgIGJyb2tlbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKTsKSW5kZXg6IGxvYWRlci9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTY1NDEp
CisrKyBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMSArMzMs
MjkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCi0jaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkxvYWRlckZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKKyNpZmRlZiBQTEFURk9STShDRykKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCisj
ZW5kaWYKKworI2lmZGVmIFNWR19TVVBQT1JUCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNlbmRp
ZgorCiB1c2luZyBzdGQ6Om1heDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBkbCwgY29uc3QgU3RyaW5nICZ1cmwsIENhY2hlUG9s
aWN5IGNhY2hlUG9saWN5LCB0aW1lX3QgX2V4cGlyZURhdGUpCiAgICAgOiBDYWNoZWRSZXNvdXJj
ZSh1cmwsIEltYWdlUmVzb3VyY2UsIGNhY2hlUG9saWN5LCBfZXhwaXJlRGF0ZSkKKyAgICAsIG1f
aW1hZ2UoMCkKICAgICAsIG1fZGF0YVNpemUoMCkKKyAgICAsIG1fZXJyb3JPY2N1cnJlZChmYWxz
ZSkKIHsKLSAgICBtX2ltYWdlID0gMDsKLSAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAg
ICBtX3N0YXR1cyA9IFVua25vd247CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKIH0KQEAgLTExNCwx
MiArMTIyLDE5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFyKCkKIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBpZiBpdCBk
b2Vzbid0IHlldCBleGlzdC4KLSAgICBpZiAoIW1faW1hZ2UpCi0jaWYgX19BUFBMRV9fCi0gICAg
ICAgIG1faW1hZ2UgPSBuZXcgSW1hZ2UodGhpcywgUmVzcG9uc2VNSU1FVHlwZShtX3Jlc3BvbnNl
KSA9PSAiYXBwbGljYXRpb24vcGRmIik7Ci0jZWxzZQotICAgICAgICBtX2ltYWdlID0gbmV3IElt
YWdlKHRoaXMsIGZhbHNlKTsKKyAgICBpZiAoIW1faW1hZ2UpIHsKKyNpZmRlZiBQTEFURk9STShD
RykKKyAgICAgICAgaWYgKFJlc3BvbnNlTUlNRVR5cGUobV9yZXNwb25zZSkgPT0gImFwcGxpY2F0
aW9uL3BkZiIpCisgICAgICAgICAgICBtX2ltYWdlID0gbmV3IFBERkRvY3VtZW50SW1hZ2UodGhp
cyk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorI2lmIFNWR19TVVBQT1JUCisgICAgICAgIGlmIChS
ZXNwb25zZU1JTUVUeXBlKG1fcmVzcG9uc2UpID09ICJpbWFnZS9zdmcreG1sIikKKyAgICAgICAg
ICAgIG1faW1hZ2UgPSBuZXcgU1ZHSW1hZ2UodGhpcyk7CisgICAgICAgIGVsc2UKICNlbmRpZgor
ICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBCaXRtYXBJbWFnZSh0aGlzKTsKKyAgICB9CiB9CiAK
IFZlY3RvcjxjaGFyPiYgQ2FjaGVkSW1hZ2U6OmJ1ZmZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBhZGRlZFNpemUsIFJlcXVlc3QqIHJlcXVlc3QpCkluZGV4OiBsb2FkZXIvaWNvbi9JY29u
RGF0YUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvaWNvbi9JY29uRGF0YUNhY2hlLmNw
cAkocmV2aXNpb24gMTY1NDEpCisrKyBsb2FkZXIvaWNvbi9JY29uRGF0YUNhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkljb25EYXRhQ2FjaGUuaCIKIAotI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU1FMU3RhdGVtZW50LmgiCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSWNvbkRhdGFD
YWNoZTo6c2V0SW1hZ2VEYXRhKHVuc2lnbmUKICAgICAvLyBtYW5hZ2luZyBhbiBpbWFnZSB0aGF0
IHdhcyBjcmVhdGVkIHdpdGggYSBjb3B5IG9mIHRoaXMgcmF3IGltYWdlIGRhdGEuCiAgICAgaWYg
KG1faW1hZ2UpCiAgICAgICAgIGRlbGV0ZSBtX2ltYWdlOwotICAgIG1faW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKKyAgICBtX2ltYWdlID0gbmV3IEJpdG1hcEltYWdlKCk7CiAKICAgICAvLyBDb3B5IHRo
ZSBwcm92aWRlZCBkYXRhIGludG8gdGhlIGJ1ZmZlciBvZiB0aGUgbmV3IEltYWdlIG9iamVjdAog
ICAgIFZlY3RvcjxjaGFyPiYgZGF0YUJ1ZmZlciA9IG1faW1hZ2UtPmRhdGFCdWZmZXIoKTsKSW5k
ZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0dy
YXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNjU0MSkKKysrIHBsYXRmb3JtL0dyYXBoaWNzQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CiAgICAgICAgIHZv
aWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICAgICAgdm9pZCB0cmFuc2xhdGUo
ZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6
ZSYpOwogICAgICAgICBJbnRQb2ludCBvcmlnaW4oKTsKIAogICAgICAgICB2b2lkIGNvbmNhdENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKSW5kZXg6IHBsYXRmb3JtL0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9JbWFnZS5jcHAJKHJldmlzaW9uIDE2NTQxKQorKysgcGxhdGZv
cm0vSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4MyArMzUsMjEgQEAKICNpbmNsdWRl
ICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JNKENHKQot
Ly8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0jaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAv
LyBJbWFnZSBDbGFzcwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAKLUltYWdlOjpJbWFnZSgpCi06IG1fY3VycmVudEZyYW1lKDApLCBtX2ZyYW1l
cygwKSwgbV9hbmltYXRpb25PYnNlcnZlcigwKSwKLSAgbV9mcmFtZVRpbWVyKDApLCBtX3JlcGV0
aXRpb25Db3VudCgwKSwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApLAotICBtX2lzU29saWRDb2xv
cihmYWxzZSksIG1fYW5pbWF0aW5nSW1hZ2VUeXBlKHRydWUpLCBtX2FuaW1hdGlvbkZpbmlzaGVk
KGZhbHNlKSwKLSAgbV9oYXZlU2l6ZShmYWxzZSksIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKK0lt
YWdlOjpJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fYW5p
bWF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXIpCiB7Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgbV9pc1BE
RiA9IGZhbHNlOyAvLyBGSVhNRTogV2lsbCBnbyBhd2F5IHdoZW4gd2UgbWFrZSBQREYgYSBzdWJj
bGFzcy4KLSAgICBtX1BERkRvYyA9IDA7Ci0jZW5kaWYKICAgICBpbml0UGxhdGZvcm1EYXRhKCk7
CiB9CiAKLUltYWdlOjpJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgYm9v
bCBpc1BERikKLSA6IG1fY3VycmVudEZyYW1lKDApLCBtX2ZyYW1lcygwKSwgbV9hbmltYXRpb25P
YnNlcnZlcigwKSwKLSAgbV9mcmFtZVRpbWVyKDApLCBtX3JlcGV0aXRpb25Db3VudCgwKSwgbV9y
ZXBldGl0aW9uc0NvbXBsZXRlKDApLAotICBtX2lzU29saWRDb2xvcihmYWxzZSksIG1fYW5pbWF0
aW5nSW1hZ2VUeXBlKHRydWUpLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKSwKLSAgbV9oYXZl
U2l6ZShmYWxzZSksIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKLXsKLSAgICBpbml0UGxhdGZvcm1E
YXRhKCk7Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgbV9pc1BERiA9IGlzUERGOyAvLyBGSVhNRTog
V2lsbCBnbyBhd2F5IHdoZW4gd2UgbWFrZSBQREYgYSBzdWJjbGFzcy4KLSAgICBtX1BERkRvYyA9
IDA7Ci0jZW5kaWYKLSAgICBtX2FuaW1hdGlvbk9ic2VydmVyID0gb2JzZXJ2ZXI7Ci19Ci0KIElt
YWdlOjp+SW1hZ2UoKQogewogICAgIGludmFsaWRhdGVEYXRhKCk7Ci0gICAgc3RvcEFuaW1hdGlv
bigpOwotI2lmIFBMQVRGT1JNKENHKQotICAgIGRlbGV0ZSBtX1BERkRvYzsgLy8gRklYTUU6IFdp
bGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgYSBQREYgaW1hZ2Ugc3ViY2xhc3MuCi0jZW5kaWYKLX0K
LQotdm9pZCBJbWFnZTo6aW52YWxpZGF0ZURhdGEoKQotewotICAgIC8vIERlc3Ryb3kgdGhlIGNh
Y2hlZCBpbWFnZXMgYW5kIHJlbGVhc2UgdGhlbS4KLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKSB7
Ci0gICAgICAgIG1fZnJhbWVzLmxhc3QoKS5jbGVhcigpOwotICAgICAgICBtX2lzU29saWRDb2xv
ciA9IGZhbHNlOwotICAgICAgICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7Ci0gICAgfQotfQot
Ci12b2lkIEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKLXsKLSAgICBzaXplX3QgbnVt
RnJhbWVzID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghbV9mcmFtZXMuc2l6ZSgpICYmIHNob3Vs
ZEFuaW1hdGUoKSkgeyAgICAgICAgICAgIAotICAgICAgICAvLyBTbmFnIHRoZSByZXBldGl0aW9u
IGNvdW50LgotICAgICAgICBtX3JlcGV0aXRpb25Db3VudCA9IG1fc291cmNlLnJlcGV0aXRpb25D
b3VudCgpOwotICAgICAgICBpZiAobV9yZXBldGl0aW9uQ291bnQgPT0gY0FuaW1hdGlvbk5vbmUp
Ci0gICAgICAgICAgICBtX2FuaW1hdGluZ0ltYWdlVHlwZSA9IGZhbHNlOwotICAgIH0KLSAgICAK
LSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQotICAgICAgICBtX2ZyYW1lcy5y
ZXNpemUobnVtRnJhbWVzKTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3Vy
Y2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWUpCi0gICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotCi0gICAgaWYgKHNob3VsZEFu
aW1hdGUoKSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5m
cmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxw
aGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKIGJvb2wgSW1h
Z2U6OmlzTnVsbCgpIGNvbnN0CkBAIC0xMTksMjUgKzU3LDYgQEAgYm9vbCBJbWFnZTo6aXNOdWxs
KCkgY29uc3QKICAgICByZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsKIH0KIAotSW50U2l6ZSBJbWFn
ZTo6c2l6ZSgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgLy8gRklYTUU6IFdpbGwg
Z28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0gICAgaWYgKG1faXNQREYpIHsK
LSAgICAgICAgaWYgKG1fUERGRG9jKSB7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2l6ZSA9IG1f
UERGRG9jLT5zaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gSW50U2l6ZSgoaW50KXNpemUud2lk
dGgoKSwgKGludClzaXplLmhlaWdodCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotI2VuZGlm
Ci0gICAgCi0gICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSAmJiAhbV9oYXZlU2l6ZSkgewotICAgICAg
ICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7Ci0gICAgICAgIG1faGF2ZVNpemUgPSB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gbV9zaXplOwotfQotCiBib29sIEltYWdlOjpzZXREYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGludCBsZW5ndGggPSBtX2RhdGEuc2l6ZSgpOwpAQCAt
MTY2LDEzNiArODUsNiBAQCBib29sIEltYWdlOjpzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBJbWFnZTo6c2V0TmF0aXZlRGF0YShOYXRp
dmVCeXRlUHRyIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotI2lmIFBMQVRGT1JNKENH
KQotICAgIC8vIEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNsYXNz
LgotICAgIGlmIChtX2lzUERGKSB7Ci0gICAgICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1f
UERGRG9jKQotICAgICAgICAgICAgbV9QREZEb2MgPSBuZXcgUERGRG9jdW1lbnRJbWFnZShkYXRh
KTsKLSAgICAgICAgcmV0dXJuIG1fUERGRG9jOwotICAgIH0KLSNlbmRpZgotCi0gICAgaW52YWxp
ZGF0ZURhdGEoKTsKLSAgICAKLSAgICAvLyBGZWVkIGFsbCB0aGUgZGF0YSB3ZSd2ZSBzZWVuIHNv
IGZhciB0byB0aGUgaW1hZ2UgZGVjb2Rlci4KLSAgICBtX3NvdXJjZS5zZXREYXRhKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCk7Ci0gICAgCi0gICAgLy8gSW1hZ2UgcHJvcGVydGllcyB3aWxsIG5vdCBi
ZSBhdmFpbGFibGUgdW50aWwgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBmaWxlCi0gICAgLy8gcmVh
Y2hlcyBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUuCi0gICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJs
ZSgpOwotfQotCi1zaXplX3QgSW1hZ2U6OmZyYW1lQ291bnQoKQotewotICAgIHJldHVybiBtX3Nv
dXJjZS5mcmFtZUNvdW50KCk7Ci19Ci0KLWJvb2wgSW1hZ2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17
Ci0gICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBt
X3NpemVBdmFpbGFibGUgPSBtX3NvdXJjZS5pc1NpemVBdmFpbGFibGUoKTsKLQotICAgIHJldHVy
biBtX3NpemVBdmFpbGFibGU7Ci0KLX0KLQotTmF0aXZlSW1hZ2VQdHIgSW1hZ2U6OmZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCk7Ci0KLSAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Ci19Ci0KLWZsb2F0IEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgY2FjaGVGcmFtZShp
bmRleCk7Ci0KLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19Ci0KLWJv
b2wgSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChpbmRl
eCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAg
ICBjYWNoZUZyYW1lKGluZGV4KTsKLQotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNB
bHBoYTsKLX0KLQotYm9vbCBJbWFnZTo6c2hvdWxkQW5pbWF0ZSgpCi17Ci0gICAgcmV0dXJuICht
X2FuaW1hdGluZ0ltYWdlVHlwZSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBtX2FuaW1hdGlv
bk9ic2VydmVyKTsKLX0KLQotdm9pZCBJbWFnZTo6c3RhcnRBbmltYXRpb24oKQotewotICAgIGlm
IChtX2ZyYW1lVGltZXIgfHwgIXNob3VsZEFuaW1hdGUoKSB8fCBmcmFtZUNvdW50KCkgPD0gMSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9mcmFtZVRpbWVyID0gbmV3IFRpbWVyPEltYWdlPih0
aGlzLCAmSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwotICAgIG1fZnJhbWVUaW1lci0+c3RhcnRP
bmVTaG90KGZyYW1lRHVyYXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSk7Ci19Ci0KLXZvaWQg
SW1hZ2U6OnN0b3BBbmltYXRpb24oKQotewotICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBh
bmltYXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQot
ICAgIC8vIHRoZSB0aW1lciB1bmxlc3MgYWxsIHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2lu
Zy4KLSAgICBkZWxldGUgbV9mcmFtZVRpbWVyOwotICAgIG1fZnJhbWVUaW1lciA9IDA7Ci19Ci0K
LXZvaWQgSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKLXsKLSAgICBzdG9wQW5pbWF0aW9uKCk7Ci0g
ICAgbV9jdXJyZW50RnJhbWUgPSAwOwotICAgIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSA9IDA7Ci0g
ICAgbV9hbmltYXRpb25GaW5pc2hlZCA9IGZhbHNlOwotfQotCi0KLXZvaWQgSW1hZ2U6OmFkdmFu
Y2VBbmltYXRpb24oVGltZXI8SW1hZ2U+KiB0aW1lcikKLXsKLSAgICAvLyBTdG9wIHRoZSBhbmlt
YXRpb24uCi0gICAgc3RvcEFuaW1hdGlvbigpOwotICAgIAotICAgIC8vIFNlZSBpZiBhbnlvbmUg
aXMgc3RpbGwgcGF5aW5nIGF0dGVudGlvbiB0byB0aGlzIGFuaW1hdGlvbi4gIElmIG5vdCwgd2Ug
ZG9uJ3QKLSAgICAvLyBhZHZhbmNlIGFuZCB3aWxsIHNpbXBseSBwYXVzZSB0aGUgYW5pbWF0aW9u
LgotICAgIGlmIChhbmltYXRpb25PYnNlcnZlcigpLT5zaG91bGRTdG9wQW5pbWF0aW9uKHRoaXMp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2N1cnJlbnRGcmFtZSsrOwotICAgIGlmIChtX2N1
cnJlbnRGcmFtZSA+PSBmcmFtZUNvdW50KCkpIHsKLSAgICAgICAgbV9yZXBldGl0aW9uc0NvbXBs
ZXRlICs9IDE7Ci0gICAgICAgIGlmIChtX3JlcGV0aXRpb25Db3VudCAmJiBtX3JlcGV0aXRpb25z
Q29tcGxldGUgPj0gbV9yZXBldGl0aW9uQ291bnQpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0aW9u
RmluaXNoZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lLS07Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9jdXJyZW50RnJhbWUgPSAwOwotICAg
IH0KLQotICAgIC8vIE5vdGlmeSBvdXIgb2JzZXJ2ZXIgdGhhdCB0aGUgYW5pbWF0aW9uIGhhcyBh
ZHZhbmNlZC4KLSAgICBhbmltYXRpb25PYnNlcnZlcigpLT5hbmltYXRpb25BZHZhbmNlZCh0aGlz
KTsKLSAgICAgICAgCi0gICAgLy8gS2ljayBvZmYgYSB0aW1lciB0byBtb3ZlIHRvIHRoZSBuZXh0
IGZyYW1lLgotICAgIG1fZnJhbWVUaW1lciA9IG5ldyBUaW1lcjxJbWFnZT4odGhpcywgJkltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKTsKLSAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChmcmFt
ZUR1cmF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOwotfQotCiBJbnRSZWN0IEltYWdlOjpy
ZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpOwpJ
bmRleDogcGxhdGZvcm0vSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9JbWFnZS5oCShy
ZXZpc2lvbiAxNjU0MSkKKysrIHBsYXRmb3JtL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDE0ICsyNCwxMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBJTUFHRV9IXwot
I2RlZmluZSBJTUFHRV9IXworI2lmbmRlZiBJbWFnZV9ICisjZGVmaW5lIEltYWdlX0gKIAogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIklt
YWdlU291cmNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5o
IgorI2luY2x1ZGUgIkltYWdlU291cmNlLmgiIC8vIGZvciBOYXRpdmVCeXRlUHRyCiAKICNpZiBQ
TEFURk9STShNQUMpCiAjaWZkZWYgX19PQkpDX18KQEAgLTQ2LDUxICs0NCwxNyBAQCB0eXBlZGVm
IHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIHN0cnVjdCBGcmFtZURhdGE7Ci19Ci0KLS8vIFRoaXMgY29tcGxpY2F0ZWQtbG9va2lu
ZyBkZWNsYXJhdGlvbiB0ZWxscyB0aGUgZnJhbWVkYXRhIFZlY3RvciB0aGF0IGl0IGNhbiBjb3B5
IHdpdGhvdXQKLS8vIGhhdmluZyB0byBpbnZva2Ugb3VyIGNvcHkgY29uc3RydWN0b3IuIFRoaXMg
YWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHJlZiBjb3VudGluZwotLy8gdGhl
IG5hdGl2ZSBmcmFtZXMuCi1uYW1lc3BhY2UgV1RGIHsgCi0gICAgdGVtcGxhdGU8PiBjbGFzcyBW
ZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3Rv
clRyYWl0cyB7fTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50
OwogY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgSW50UmVjdDsKLWNsYXNzIFBERkRvY3VtZW50SW1hZ2U7CiBjbGFzcyBTdHJp
bmc7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUaW1lcjsKLQogLy8gVGhpcyBjbGFz
cyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4K
IGNsYXNzIEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXI7CiAKLS8vID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotc3RydWN0IEZy
YW1lRGF0YSB7Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAgIDptX2ZyYW1lKDApLCBtX2R1cmF0aW9u
KDApLCBtX2hhc0FscGhhKHRydWUpIAotICAgIHt9Ci0KLSAgICB+RnJhbWVEYXRhKCkKLSAgICB7
IAotICAgICAgICBjbGVhcigpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIE5h
dGl2ZUltYWdlUHRyIG1fZnJhbWU7Ci0gICAgZmxvYXQgbV9kdXJhdGlvbjsKLSAgICBib29sIG1f
aGFzQWxwaGE7Ci19OwotCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAvLyBJbWFnZSBDbGFzcwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtOTgsMzcgKzYyLDI5IEBAIHN0cnVjdCBGcmFt
ZURhdGEgewogY2xhc3MgSW1hZ2UgOiBOb25jb3B5YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAgICBJbWFnZSgpOwotICAgIEltYWdlKEltYWdlQW5p
bWF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBib29sIGlzUERGID0gZmFsc2UpOwotICAgIH5JbWFn
ZSgpOworICAgIEltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIqID0gMCk7CisgICAgdmlydHVh
bCB+SW1hZ2UoKTsKICAgICAKICAgICBzdGF0aWMgSW1hZ2UqIGxvYWRQbGF0Zm9ybVJlc291cmNl
KGNvbnN0IGNoYXIgKm5hbWUpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
KTsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAKLSAgICBJbnRTaXplIHNpemUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKICAgICBJbnRSZWN0IHJl
Y3QoKSBjb25zdDsKICAgICBpbnQgd2lkdGgoKSBjb25zdDsKICAgICBpbnQgaGVpZ2h0KCkgY29u
c3Q7CiAKLSAgICBib29sIHNldERhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIGJvb2wg
c2V0TmF0aXZlRGF0YShOYXRpdmVCeXRlUHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAg
dmlydHVhbCBib29sIHNldERhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZpcnR1YWwg
Ym9vbCBzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIFZlY3RvcjxjaGFyPiYgZGF0YUJ1ZmZlcigpIHsg
cmV0dXJuIG1fZGF0YTsgfQogCiAgICAgLy8gSXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJl
IGlzIG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxsIGFzIHB1YmxpYyBBUEkuICBUaGlzIGlzIGJlY2F1
c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3RvcCBhbmltYXRpbmcgbGF6aWx5LiAgQW5pbWF0aW9u
IGJlZ2lucyB3aGVuZXZlciBzb21lb25lIGRyYXdzIHRoZSBpbWFnZS4gIEl0IHdpbGwKICAgICAv
LyBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9ic2VydmVycyBubyBsb25nZXIgd2FudCB0
byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgotICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpOwot
ICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKLSAgICAKLSAgICAvLyBGcmFtZSBhY2Nlc3NvcnMu
Ci0gICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1l
OyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0
SW5kZXgoc2l6ZV90IGluZGV4KTsKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZXNldEFuaW1hdGlvbigpIHsgfQogCiAgICAgLy8gVHlwaWNhbGx5IHRoZSBDYWNoZWRJbWFnZSB0
aGF0IG93bnMgdXMuCiAgICAgSW1hZ2VBbmltYXRpb25PYnNlcnZlciogYW5pbWF0aW9uT2JzZXJ2
ZXIoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbk9ic2VydmVyOyB9CkBAIC0xNDAsNzcgKzk2
LDUyIEBAIHB1YmxpYzoKICAgICBOU0ltYWdlKiBnZXROU0ltYWdlKCk7CiAgICAgQ0ZEYXRhUmVm
IGdldFRJRkZSZXByZXNlbnRhdGlvbigpOwogI2VuZGlmCi0KKyAgICAKICNpZiBQTEFURk9STShD
RykKICAgICBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKTsKICNlbmRpZgotCisgICAgCiAjaWYg
UExBVEZPUk0oV0lOKQogICAgIGJvb2wgZ2V0SEJJVE1BUChIQklUTUFQIGJtcCk7CiAjZW5kaWYK
LQorICAgIAorICAgIC8vIEZyYW1lIGFjY2Vzc29ycy4KKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJy
ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBzaXplX3QgZnJhbWVD
b3VudCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJ
bmRleChzaXplX3QpID0gMDsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBWZWN0b3I8Y2hhcj4gbV9k
YXRhOyAvLyBUaGUgZW5jb2RlZCByYXcgZGF0YSBmb3IgdGhlIGltYWdlLgorICAgIAorICAgIC8v
IEludmFsaWRhdGlvbiBvZiBuYXRpdmUgZGF0YS4KKyAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9y
bURhdGEoKTsKKyAgICAKKyAgICBib29sIGNhbkZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJu
IChpc1NvbGlkQ29sb3IoKSAmJiBjdXJyZW50RnJhbWUoKSA9PSAwKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1NvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Q29sb3Igc29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKSB7IH0KKyAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yKSA9IDA7CiAgICAgdm9pZCBkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yKTsK
LQotICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNl
cHQgaW50ZXJuYWxseS4KLSAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KTsKLQorICAg
IAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGFsbCBvdXIgY2FjaGVkIGRhdGEgd2hlbiBt
b3JlIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0gICAgdm9pZCBpbnZhbGlkYXRlRGF0YSgpOwotCi0g
ICAgLy8gV2hldGhlciBvciBub3Qgc2l6ZSBpcyBhdmFpbGFibGUgeWV0LiAgICAKLSAgICBib29s
IGlzU2l6ZUF2YWlsYWJsZSgpOwotCi0gICAgLy8gQW5pbWF0aW9uLgotICAgIGJvb2wgc2hvdWxk
QW5pbWF0ZSgpOwotICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKTsKLSAgICB2b2lkIGFkdmFuY2VB
bmltYXRpb24oVGltZXI8SW1hZ2U+KiB0aW1lcik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVEYXRhKCkgeyBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7IH0KICAgICAKICAgICAvLyBDb25z
dHJ1Y3RvciBmb3IgT1Mtc3BlY2lmaWMgZGF0YS4KICAgICB2b2lkIGluaXRQbGF0Zm9ybURhdGEo
KTsKLQotICAgIC8vIEludmFsaWRhdGlvbiBvZiBuYXRpdmUgZGF0YS4KLSAgICB2b2lkIGludmFs
aWRhdGVQbGF0Zm9ybURhdGEoKTsKLQotICAgIC8vIENoZWNrcyB0byBzZWUgaWYgdGhlIGltYWdl
IGlzIGEgMXgxIHNvbGlkIGNvbG9yLiAgV2Ugb3B0aW1pemUgdGhlc2UgaW1hZ2VzIGFuZCBqdXN0
IGRvIGEgZmlsbCByZWN0IGluc3RlYWQuCi0gICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsK
LQotICAgIC8vIE1lbWJlcnMKLSAgICBWZWN0b3I8Y2hhcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2Rl
ZCByYXcgZGF0YSBmb3IgdGhlIGltYWdlLgotICAgIEltYWdlU291cmNlIG1fc291cmNlOwotICAg
IG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJh
bGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgotICAg
IAotICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50
IGZyYW1lIG9mIGFuaW1hdGlvbi4KLSAgICBWZWN0b3I8RnJhbWVEYXRhPiBtX2ZyYW1lczsgLy8g
QW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0
byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KLSAgICAKKyAgICAgICAgCiAg
ICAgLy8gT3VyIGFuaW1hdGlvbiBvYnNlcnZlci4KICAgICBJbWFnZUFuaW1hdGlvbk9ic2VydmVy
KiBtX2FuaW1hdGlvbk9ic2VydmVyOwotICAgIFRpbWVyPEltYWdlPiogbV9mcmFtZVRpbWVyOwot
ICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxv
b3BzIHdlIHNob3VsZCBkby4KLSAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93
IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNoZWQuCi0KKyAgICAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgbXV0YWJsZSBOU0ltYWdlKiBtX25zSW1hZ2U7IC8vIEEgY2FjaGVkIE5TSW1hZ2Ug
b2YgZnJhbWUgMC4gT25seSBidWlsdCBsYXppbHkgaWYgc29tZW9uZSBhY3R1YWxseSBxdWVyaWVz
IGZvciBvbmUuCiAgICAgbXV0YWJsZSBDRkRhdGFSZWYgbV90aWZmUmVwOyAvLyBDYWNoZWQgVElG
RiByZXAgZm9yIGZyYW1lIDAuICBPbmx5IGJ1aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMg
Zm9yIG9uZS4KICNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgUERGRG9jdW1lbnRJbWFn
ZSogbV9QREZEb2M7Ci0gICAgYm9vbCBtX2lzUERGOwotI2VuZGlmCi0KLSAgICBDb2xvciBtX3Nv
bGlkQ29sb3I7ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29s
b3IgdG8gdXNlIHRvIGZpbGwuCi0gICAgYm9vbCBtX2lzU29saWRDb2xvcjsgIC8vIFdoZXRoZXIg
b3Igbm90IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFnZS4KLQotICAgIGJvb2wgbV9hbmltYXRpbmdJ
bWFnZVR5cGU7ICAvLyBXaGV0aGVyIG9yIG5vdCB3ZSdyZSBhbiBpbWFnZSB0eXBlIHRoYXQgaXMg
Y2FwYWJsZSBvZiBhbmltYXRpbmcgKEdJRikuCi0gICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVk
OyAgLy8gV2hldGhlciBvciBub3Qgd2UndmUgY29tcGxldGVkIHRoZSBlbnRpcmUgYW5pbWF0aW9u
LgotCi0gICAgbXV0YWJsZSBib29sIG1faGF2ZVNpemU7IC8vIFdoZXRoZXIgb3Igbm90IG91ciB8
bV9zaXplfCBtZW1iZXIgdmFyaWFibGUgaGFzIHRoZSBmaW5hbCBvdmVyYWxsIGltYWdlIHNpemUg
eWV0LgotICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4g
b2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlP
LgogfTsKIAogfQpJbmRleDogcGxhdGZvcm0vY2cvQml0bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDE2NTIyKQorKysg
cGxhdGZvcm0vY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCiAjaWYgUExBVEZPUk0oQ0cpCiAKQEAgLTUxLDEyICs1
MSwxMiBAQCB2b2lkIEZyYW1lRGF0YTo6Y2xlYXIoKQogfQogCiAvLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEltYWdlIENsYXNzCisvLyBCaXRt
YXBJbWFnZSBDbGFzcwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAKIC8vIERyYXdpbmcgUm91dGluZXMKIAotdm9pZCBJbWFnZTo6Y2hlY2tGb3JT
b2xpZENvbG9yKCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiB7CiAg
ICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7
CkBAIC05MCwzMSArOTAsMzAgQEAgQ0dJbWFnZVJlZiBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiAg
ICAgcmV0dXJuIGZyYW1lQXRJbmRleCgwKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3N0YXRpYyBpbmxpbmUg
dm9pZCBmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3ApCit7CisgICAgaWYgKGNvbG9yLmFscGhhKCkgPiAwKSB7CisgICAgICAgIGN0eHQtPnNh
dmUoKTsKKyAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFjb2xvci5oYXNBbHBo
YSgpICYmIGNvbXBvc2l0ZU9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5
IDogY29tcG9zaXRlT3ApOworICAgICAgICBjdHh0LT5maWxsUmVjdChyZWN0LCBjb2xvcik7Cisg
ICAgICAgIGN0eHQtPnJlc3RvcmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCiB7Ci0g
ICAgaWYgKG1faXNQREYpIHsKLSAgICAgICAgaWYgKG1fUERGRG9jKQotICAgICAgICAgICAgbV9Q
REZEb2MtPmRyYXcoY3R4dCwgc3JjUmVjdCwgZHN0UmVjdCwgY29tcG9zaXRlT3ApOwotICAgICAg
ICByZXR1cm47Ci0gICAgfSAKLSAgICAKICAgICBpZiAoIW1fc291cmNlLmluaXRpYWxpemVkKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDR1JlY3QgZnIgPSBjdHh0LT5yb3VuZFRvRGV2
aWNlUGl4ZWxzKHNyY1JlY3QpOwogICAgIENHUmVjdCBpciA9IGN0eHQtPnJvdW5kVG9EZXZpY2VQ
aXhlbHMoZHN0UmVjdCk7CiAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGN1cnJl
bnRGcmFtZSgpKTsKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24n
dCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faXNTb2xp
ZENvbG9yICYmIG1fY3VycmVudEZyYW1lID09IDApIHsKLSAgICAgICAgaWYgKG1fc29saWRDb2xv
ci5hbHBoYSgpID4gMCkgewotICAgICAgICAgICAgY3R4dC0+c2F2ZSgpOwotICAgICAgICAgICAg
Y3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFtX3NvbGlkQ29sb3IuaGFzQWxwaGEoKSAmJiBj
b21wb3NpdGVPcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IGNvbXBv
c2l0ZU9wKTsKLSAgICAgICAgICAgIGN0eHQtPmZpbGxSZWN0KGlyLCBtX3NvbGlkQ29sb3IpOwot
ICAgICAgICAgICAgY3R4dC0+cmVzdG9yZSgpOwotICAgICAgICB9CisgICAgaWYgKChjYW5GaWxs
V2l0aFNvbGlkQ29sb3IoKSkpIHsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGly
LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTczLDEyICsxNzIsMTEgQEAgdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIAogICAgIGN0eHQtPnJlc3RvcmUoKTsKICAgICAKICAgICBzdGFydEFuaW1hdGlvbigpOwot
CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBj
b250ZXh0KQogewotICAgIEltYWdlKiBkYXRhID0gKEltYWdlKilpbmZvOworICAgIEJpdG1hcElt
YWdlKiBkYXRhID0gKEJpdG1hcEltYWdlKilpbmZvOwogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBk
YXRhLT5mcmFtZUF0SW5kZXgoZGF0YS0+Y3VycmVudEZyYW1lKCkpOwogICAgIGZsb2F0IHcgPSBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwogICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKTsKQEAgLTE5MSwxNyArMTg5LDEyIEBAIHN0YXRpYyBjb25zdCBDR1BhdHRlcm5DYWxsYmFj
a3MgcGF0dGVybkMKIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQogeyAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAo
bV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0g
ICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNB
bHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3Ap
OwotICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZGVzdFJlY3QsIG1fc29saWRDb2xvcik7Ci0g
ICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoKGNhbkZpbGxX
aXRoU29saWRDb2xvcigpKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVz
dFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
ODAsMTcgKzI3MywxMiBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBj
CiB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUs
CiAgICAgICAgICAgICAgICAgICAgICAgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQogeyAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pc1Nv
bGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAobV9zb2xpZENv
bG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0gICAgICAgICAg
ICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNBbHBoYSgpICYm
IG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwotICAgICAg
ICAgICAgY3R4dC0+ZmlsbFJlY3QoZHN0UmVjdCwgbV9zb2xpZENvbG9yKTsKLSAgICAgICAgICAg
IGN0eHQtPnJlc3RvcmUoKTsKLSAgICAgICAgfQorICAgIGlmICgoY2FuRmlsbFdpdGhTb2xpZENv
bG9yKCkpKSB7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogcGxhdGZvcm0v
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTY1NDEpCisrKyBwbGF0Zm9ybS9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSwxMSArNjY1LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgYW5nbGUKICAgICBDR0NvbnRleHRSb3RhdGVD
VE0ocGxhdGZvcm1Db250ZXh0KCksIGFuZ2xlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5z
bGF0ZShjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3Jt
Q29udGV4dCgpLCB4LCB5KTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250
ZXh0KCksIG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQpJ
bmRleDogcGxhdGZvcm0vY2cvSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vY2cv
SW1hZ2VDRy5jcHAJKHJldmlzaW9uIDE2NTQxKQorKysgcGxhdGZvcm0vY2cvSW1hZ2VDRy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgotCi0jaWYg
UExBVEZPUk0oQ0cpCi0KLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9u
U2VydmljZXMuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZyYW1l
RGF0YTo6Y2xlYXIoKQotewotICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIENGUmVsZWFzZSht
X2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7Ci0gICAgICAgIG1fZHVyYXRpb24gPSAwLjsK
LSAgICAgICAgbV9oYXNBbHBoYSA9IHRydWU7Ci0gICAgfQotfQotCi0vLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEltYWdlIENsYXNzCi0vLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLy8gRHJh
d2luZyBSb3V0aW5lcwotCi12b2lkIEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQotewotICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwot
ICAgIGVsc2UgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KDApOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNv
bG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdlLgotICAgICAg
ICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UpID09IDEpIHsKLSAgICAgICAgICAgIENHRmxvYXQgcGl4ZWxbNF07IC8vIFJH
QkEKLSAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlZiBzcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZVJHQigpOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGJtYXAgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGUoJnBpeGVsLCAxLCAxLCA4KnNpemVvZihmbG9hdCksIHNpemVvZihwaXhlbCks
IHNwYWNlLAotICAgICAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8
IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7Ci0g
ICAgICAgICAgICBpZiAoYm1hcCkgewotICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dChi
bWFwKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICAg
ICAgQ0dSZWN0IGRzdCA9IHsgezAsIDB9LCB7MSwgMX0gfTsKLSAgICAgICAgICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYm1hcCwgZHN0LCBpbWFnZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBp
eGVsWzNdID09IDApCi0gICAgICAgICAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAs
IDAsIDAsIDApOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9z
b2xpZENvbG9yID0gQ29sb3IoaW50KHBpeGVsWzBdIC8gcGl4ZWxbM10gKiAyNTUpLCBpbnQocGl4
ZWxbMV0gLyBwaXhlbFszXSAqIDI1NSksIGludChwaXhlbFsyXSAvIHBpeGVsWzNdICogMjU1KSwg
aW50KHBpeGVsWzNdICogMjU1KSk7Ci0gICAgICAgICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0
cnVlOwotICAgICAgICAgICAgICAgIENGUmVsZWFzZShibWFwKTsKLSAgICAgICAgICAgIH0gCi0g
ICAgICAgICAgICBDRlJlbGVhc2Uoc3BhY2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1DR0lt
YWdlUmVmIEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKLXsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4
KDApOwotfQotCi12b2lkIEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wKQotewotICAgIGlmIChtX2lzUERGKSB7Ci0gICAgICAgIGlmICht
X1BERkRvYykKLSAgICAgICAgICAgIG1fUERGRG9jLT5kcmF3KGN0eHQsIHNyY1JlY3QsIGRzdFJl
Y3QsIGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gCi0gICAgCi0gICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ0dS
ZWN0IGZyID0gY3R4dC0+cm91bmRUb0RldmljZVBpeGVscyhzcmNSZWN0KTsKLSAgICBDR1JlY3Qg
aXIgPSBjdHh0LT5yb3VuZFRvRGV2aWNlUGl4ZWxzKGRzdFJlY3QpOwotCi0gICAgQ0dJbWFnZVJl
ZiBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFpbWFnZSkg
Ly8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX2lzU29saWRDb2xvciAmJiBtX2N1cnJlbnRGcmFtZSA9PSAw
KSB7Ci0gICAgICAgIGlmIChtX3NvbGlkQ29sb3IuYWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAg
IGN0eHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbigh
bV9zb2xpZENvbG9yLmhhc0FscGhhKCkgJiYgY29tcG9zaXRlT3AgPT0gQ29tcG9zaXRlU291cmNl
T3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBjb21wb3NpdGVPcCk7Ci0gICAgICAgICAgICBjdHh0LT5m
aWxsUmVjdChpciwgbV9zb2xpZENvbG9yKTsKLSAgICAgICAgICAgIGN0eHQtPnJlc3RvcmUoKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBjdHh0LT5zYXZlKCk7Ci0KLSAg
ICAvLyBHZXQgdGhlIGhlaWdodCAoaW4gYWRqdXN0ZWQsIGkuZS4gc2NhbGVkLCBjb29yZHMpIG9m
IHRoZSBwb3J0aW9uIG9mIHRoZSBpbWFnZQotICAgIC8vIHRoYXQgaXMgY3VycmVudGx5IGRlY29k
ZWQuICBUaGlzIGNvdWxkIGJlIGxlc3MgdGhhdCB0aGUgYWN0dWFsIGhlaWdodC4KLSAgICBDR1Np
emUgc2VsZlNpemUgPSBzaXplKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdWxsIGlt
YWdlIHNpemUsIGluIHBpeGVscwotICAgIGZsb2F0IGN1ckhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpOyAgICAgICAgIC8vIGhlaWdodCBvZiBsb2FkZWQgcG9ydGlvbiwgaW4gcGl4ZWxz
Ci0gICAgCi0gICAgQ0dTaXplIGFkanVzdGVkU2l6ZSA9IHNlbGZTaXplOwotICAgIGlmIChjdXJI
ZWlnaHQgPCBzZWxmU2l6ZS5oZWlnaHQpIHsKLSAgICAgICAgYWRqdXN0ZWRTaXplLmhlaWdodCAq
PSBjdXJIZWlnaHQgLyBzZWxmU2l6ZS5oZWlnaHQ7Ci0KLSAgICAgICAgLy8gSXMgdGhlIGFtb3Vu
dCBvZiBhdmFpbGFibGUgYmFuZHMgbGVzcyB0aGFuIHdoYXQgd2UgbmVlZCB0byBkcmF3PyAgSWYg
c28sCi0gICAgICAgIC8vIHdlIG1heSBoYXZlIHRvIGNsaXAgJ2ZyJyBpZiBpdCBnb2VzIG91dHNp
ZGUgdGhlIGF2YWlsYWJsZSBib3VuZHMuCi0gICAgICAgIGlmIChDR1JlY3RHZXRNYXhZKGZyKSA+
IGFkanVzdGVkU2l6ZS5oZWlnaHQpIHsKLSAgICAgICAgICAgIGZsb2F0IGZySGVpZ2h0ID0gYWRq
dXN0ZWRTaXplLmhlaWdodCAtIGZyLm9yaWdpbi55OyAvLyBjbGlwIGZyIHRvIGF2YWlsYWJsZSBi
b3VuZHMKLSAgICAgICAgICAgIGlmIChmckhlaWdodCA8PSAwKQotICAgICAgICAgICAgICAgIHJl
dHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGlw
cGVkIG91dCBlbnRpcmVseQotICAgICAgICAgICAgaXIuc2l6ZS5oZWlnaHQgKj0gKGZySGVpZ2h0
IC8gZnIuc2l6ZS5oZWlnaHQpOyAgICAvLyBzY2FsZSBpciBwcm9wb3J0aW9uYWxseSB0byBmcgot
ICAgICAgICAgICAgZnIuc2l6ZS5oZWlnaHQgPSBmckhlaWdodDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIEZsaXAgdGhlIGNvb3Jkcy4KLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3ApOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBpci5v
cmlnaW4ueCwgaXIub3JpZ2luLnkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEs
IC0xKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWlyLnNpemUuaGVp
Z2h0KTsKLSAgICAKLSAgICAvLyBUcmFuc2xhdGVkIHRvIG9yaWdpbiwgbm93IGRyYXcgYXQgMCww
LgotICAgIGlyLm9yaWdpbi54ID0gaXIub3JpZ2luLnkgPSAwOwotICAgIAotICAgIC8vIElmIHdl
J3JlIGRyYXdpbmcgYSBzdWIgcG9ydGlvbiBvZiB0aGUgaW1hZ2UgdGhlbiBjcmVhdGUKLSAgICAv
LyBhIGltYWdlIGZvciB0aGUgc3ViIHBvcnRpb24gYW5kIGRyYXcgdGhhdC4KLSAgICAvLyBUZXN0
IHVzaW5nIGV4YW1wbGUgc2l0ZSBhdCBodHRwOi8vd3d3Lm1leWVyd2ViLmNvbS9lcmljL2Nzcy9l
ZGdlL2NvbXBsZXhzcGlyYWwvZGVtby5odG1sCi0gICAgaWYgKGZyLnNpemUud2lkdGggIT0gYWRq
dXN0ZWRTaXplLndpZHRoIHx8IGZyLnNpemUuaGVpZ2h0ICE9IGFkanVzdGVkU2l6ZS5oZWlnaHQp
IHsKLSAgICAgICAgLy8gQ29udmVydCBmdCB0byBpbWFnZSBwaXhlbCBjb29yZHM6Ci0gICAgICAg
IGZsb2F0IHhzY2FsZSA9IGFkanVzdGVkU2l6ZS53aWR0aCAvIHNlbGZTaXplLndpZHRoOwotICAg
ICAgICBmbG9hdCB5c2NhbGUgPSBhZGp1c3RlZFNpemUuaGVpZ2h0IC8gY3VySGVpZ2h0OyAgICAg
Ly8geWVzLCBjdXJIZWlnaHQsIG5vdCBzZWxmU2l6ZS5oZWlnaHQhCi0gICAgICAgIGZyLm9yaWdp
bi54IC89IHhzY2FsZTsKLSAgICAgICAgZnIub3JpZ2luLnkgLz0geXNjYWxlOwotICAgICAgICBm
ci5zaXplLndpZHRoIC89IHhzY2FsZTsKLSAgICAgICAgZnIuc2l6ZS5oZWlnaHQgLz0geXNjYWxl
OwotICAgICAgICAKLSAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KGltYWdlLCBmcik7Ci0gICAgICAgIGlmIChpbWFnZSkgewotICAgICAgICAgICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGNvbnRleHQsIGlyLCBpbWFnZSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoaW1h
Z2UpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIC8vIERyYXcgdGhlIHdob2xlIGltYWdlLgotICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgaXIsIGltYWdlKTsKLQotICAgIGN0eHQt
PnJlc3RvcmUoKTsKLSAgICAKLSAgICBzdGFydEFuaW1hdGlvbigpOwotCi19Ci0KLXN0YXRpYyB2
b2lkIGRyYXdQYXR0ZXJuKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQotewotICAg
IEltYWdlKiBkYXRhID0gKEltYWdlKilpbmZvOwotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBkYXRh
LT5mcmFtZUF0SW5kZXgoZGF0YS0+Y3VycmVudEZyYW1lKCkpOwotICAgIGZsb2F0IHcgPSBDR0lt
YWdlR2V0V2lkdGgoaW1hZ2UpOwotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgR3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQpLnJvdW5kVG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0Ci0gICAgICAgICgwLCBkYXRhLT5zaXpl
KCkuaGVpZ2h0KCkgLSBoLCB3LCBoKSksIGltYWdlKTsgICAgCi19Ci0KLXN0YXRpYyBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgZHJhd1BhdHRlcm4sIE5V
TEwgfTsKLQotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCi17ICAgIAotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2lzU29saWRDb2xvciAmJiBtX2N1cnJlbnRGcmFtZSA9PSAwKSB7Ci0gICAgICAgIGlmICht
X3NvbGlkQ29sb3IuYWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAgIGN0eHQtPnNhdmUoKTsKLSAg
ICAgICAgICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbighbV9zb2xpZENvbG9yLmhhc0Fs
cGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7
Ci0gICAgICAgICAgICBjdHh0LT5maWxsUmVjdChkZXN0UmVjdCwgbV9zb2xpZENvbG9yKTsKLSAg
ICAgICAgICAgIGN0eHQtPnJlc3RvcmUoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQ0dQb2ludCBzY2FsZWRQb2ludCA9IHNyY1BvaW50OwotICAgIENHU2l6ZSBp
bnRyaW5zaWNUaWxlU2l6ZSA9IHNpemUoKTsKLSAgICBDR1NpemUgc2NhbGVkVGlsZVNpemUgPSBp
bnRyaW5zaWNUaWxlU2l6ZTsKLQotICAgIC8vIElmIHRpbGVTaXplIGlzIG5vdCBlcXVhbCB0byB0
aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlLCBzZXQgcGF0dGVyblRyYW5zZm9ybQotICAg
IC8vIHRvIHRoZSBhcHByb3ByaWF0ZSBzY2FsYXIgbWF0cml4LCBzY2FsZSB0aGUgc291cmNlIHBv
aW50LCBhbmQgc2V0IHRoZSBzaXplIG9mIHRoZQotICAgIC8vIHNjYWxlZCB0aWxlLiAKLSAgICBm
bG9hdCBzY2FsZVggPSAxLjA7Ci0gICAgZmxvYXQgc2NhbGVZID0gMS4wOwotICAgIENHQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5Owot
ICAgIGlmICh0aWxlU2l6ZS53aWR0aCgpICE9IGludHJpbnNpY1RpbGVTaXplLndpZHRoIHx8IHRp
bGVTaXplLmhlaWdodCgpICE9IGludHJpbnNpY1RpbGVTaXplLmhlaWdodCkgewotICAgICAgICBz
Y2FsZVggPSB0aWxlU2l6ZS53aWR0aCgpIC8gaW50cmluc2ljVGlsZVNpemUud2lkdGg7Ci0gICAg
ICAgIHNjYWxlWSA9IHRpbGVTaXplLmhlaWdodCgpIC8gaW50cmluc2ljVGlsZVNpemUuaGVpZ2h0
OwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUo
c2NhbGVYLCBzY2FsZVkpOwotICAgICAgICBzY2FsZWRUaWxlU2l6ZSA9IHRpbGVTaXplOwotICAg
IH0KLQotICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgYSBzaW5nbGUgZHJhdyBvZiB0aGUgaW1hZ2Ug
Y2FuIGNvdmVyIHRoZSBlbnRpcmUgYXJlYSB3ZSBhcmUgc3VwcG9zZWQgdG8gdGlsZS4KLSAgICBD
R1JlY3Qgb25lVGlsZVJlY3Q7Ci0gICAgb25lVGlsZVJlY3Qub3JpZ2luLnggPSBkZXN0UmVjdC54
KCkgKyBmbW9kZihmbW9kZigtc2NhbGVkUG9pbnQueCwgc2NhbGVkVGlsZVNpemUud2lkdGgpIC0g
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVkVGlsZVNpemUud2lkdGgsIHNjYWxl
ZFRpbGVTaXplLndpZHRoKTsKLSAgICBvbmVUaWxlUmVjdC5vcmlnaW4ueSA9IGRlc3RSZWN0Lnko
KSArIGZtb2RmKGZtb2RmKC1zY2FsZWRQb2ludC55LCBzY2FsZWRUaWxlU2l6ZS5oZWlnaHQpIC0g
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVkVGlsZVNpemUuaGVpZ2h0LCBzY2Fs
ZWRUaWxlU2l6ZS5oZWlnaHQpOwotICAgIG9uZVRpbGVSZWN0LnNpemUud2lkdGggPSBzY2FsZWRU
aWxlU2l6ZS53aWR0aDsKLSAgICBvbmVUaWxlUmVjdC5zaXplLmhlaWdodCA9IHNjYWxlZFRpbGVT
aXplLmhlaWdodDsKLQotICAgIC8vIElmIHRoZSBzaW5nbGUgaW1hZ2UgZHJhdyBjb3ZlcnMgdGhl
IHdob2xlIGFyZWEsIHRoZW4ganVzdCBkcmF3IG9uY2UuCi0gICAgaWYgKENHUmVjdENvbnRhaW5z
UmVjdChvbmVUaWxlUmVjdCwgZGVzdFJlY3QpKSB7Ci0gICAgICAgIENHUmVjdCBmcm9tUmVjdDsK
LSAgICAgICAgZnJvbVJlY3Qub3JpZ2luLnggPSAoZGVzdFJlY3QueCgpIC0gb25lVGlsZVJlY3Qu
b3JpZ2luLngpIC8gc2NhbGVYOwotICAgICAgICBmcm9tUmVjdC5vcmlnaW4ueSA9IChkZXN0UmVj
dC55KCkgLSBvbmVUaWxlUmVjdC5vcmlnaW4ueSkgLyBzY2FsZVk7Ci0gICAgICAgIGZyb21SZWN0
LnNpemUud2lkdGggPSBkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGVYOwotICAgICAgICBmcm9tUmVj
dC5zaXplLmhlaWdodCA9IGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGVZOwotCi0gICAgICAgIGRy
YXcoY3R4dCwgZGVzdFJlY3QsIGZyb21SZWN0LCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBDR1BhdHRlcm5SZWYgcGF0dGVybiA9IENHUGF0dGVybkNyZWF0ZSh0aGlzLCBDR1Jl
Y3RNYWtlKDAsIDAsIGludHJpbnNpY1RpbGVTaXplLndpZHRoLCBpbnRyaW5zaWNUaWxlU2l6ZS5o
ZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRl
cm5UcmFuc2Zvcm0sIGludHJpbnNpY1RpbGVTaXplLndpZHRoLCBpbnRyaW5zaWNUaWxlU2l6ZS5o
ZWlnaHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKLSAg
ICAKLSAgICBpZiAocGF0dGVybikgewotICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0
eHQtPnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgICAgIGN0eHQtPnNhdmUoKTsKLQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAgICAgLy8gRklYTUU6IFJlYWxseSB3YW50IGEgcHVibGljIEFQSSBm
b3IgdGhpcy4KLSAgICAgICAgd2tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZShjb250ZXh0LCBD
R1BvaW50TWFrZShvbmVUaWxlUmVjdC5vcmlnaW4ueCwgb25lVGlsZVJlY3Qub3JpZ2luLnkpKTsK
LSNlbmRpZgotCi0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JT
cGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2UpOwotICAgICAgICBDR0NvbG9yU3BhY2VSZWxlYXNl
KHBhdHRlcm5TcGFjZSk7Ci0KLSAgICAgICAgQ0dGbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwotICAg
ICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjb250ZXh0LCBwYXR0ZXJuLCAmcGF0dGVybkFs
cGhhKTsKLQotICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwotCi0gICAg
ICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKLQotICAgICAgICBjdHh0
LT5yZXN0b3JlKCk7Ci0KLSAgICAgICAgQ0dQYXR0ZXJuUmVsZWFzZShwYXR0ZXJuKTsKLSAgICB9
Ci0gICAgCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLX0KLQotLy8gRklYTUU6IE1lcmdlIHdpdGgg
dGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5jZSB3ZSBuZWVkIGEgY29tYmluYXRp
b24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgVGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoteyAgICAKLSAgICBDR0ltYWdlUmVmIGlt
YWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUg
PT0gMCkgewotICAgICAgICBpZiAobV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAg
ICAgICBjdHh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oIW1fc29saWRDb2xvci5oYXNBbHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIg
PyBDb21wb3NpdGVDb3B5IDogb3ApOwotICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZHN0UmVj
dCwgbV9zb2xpZENvbG9yKTsKLSAgICAgICAgICAgIGN0eHQtPnJlc3RvcmUoKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY3R4dC0+c2F2ZSgpOwotCi0gICAgQ0dT
aXplIHRpbGVTaXplID0gc3JjUmVjdC5zaXplKCk7Ci0gICAgQ0dSZWN0IGlyID0gZHN0UmVjdDsK
LSAgICBDR1JlY3QgZnIgPSBzcmNSZWN0OwotCi0gICAgLy8gTm93IHNjYWxlIHRoZSBzbGljZSBp
biB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9uIHVzaW5nIGFuIGFmZmluZSB0cmFuc2Zvcm0gdGhh
dCB3ZSB3aWxsIHBhc3MgaW50bwotICAgIC8vIHRoZSBwYXR0ZXJuLgotICAgIGZsb2F0IHNjYWxl
WCA9IDEuMGYsIHNjYWxlWSA9IDEuMGY7Ci0KLSAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0
Y2hUaWxlKQotICAgICAgICBzY2FsZVggPSBpci5zaXplLndpZHRoIC8gZnIuc2l6ZS53aWR0aDsK
LSAgICBpZiAodlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKQotICAgICAgICBzY2FsZVkgPSBp
ci5zaXplLmhlaWdodCAvIGZyLnNpemUuaGVpZ2h0OwotICAgIAotICAgIGlmIChoUnVsZSA9PSBJ
bWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAgc2NhbGVYID0gc2NhbGVZOwotICAgIGlmICh2UnVs
ZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAgc2NhbGVZID0gc2NhbGVYOwotICAgICAg
ICAKLSAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlJvdW5kVGlsZSkgewotICAgICAgICAvLyBDb21w
bGljYXRlZCBtYXRoIGVuc3Vlcy4KLSAgICAgICAgZmxvYXQgaW1hZ2VXaWR0aCA9IGZyLnNpemUu
d2lkdGggKiBzY2FsZVk7Ci0gICAgICAgIGZsb2F0IG5ld1dpZHRoID0gaXIuc2l6ZS53aWR0aCAv
IGNlaWxmKGlyLnNpemUud2lkdGggLyBpbWFnZVdpZHRoKTsKLSAgICAgICAgc2NhbGVYID0gbmV3
V2lkdGggLyBmci5zaXplLndpZHRoOwotICAgIH0KLSAgICAKLSAgICBpZiAodlJ1bGUgPT0gSW1h
Z2U6OlJvdW5kVGlsZSkgewotICAgICAgICAvLyBNb3JlIGNvbXBsaWNhdGVkIG1hdGggZW5zdWVz
LgotICAgICAgICBmbG9hdCBpbWFnZUhlaWdodCA9IGZyLnNpemUuaGVpZ2h0ICogc2NhbGVYOwot
ICAgICAgICBmbG9hdCBuZXdIZWlnaHQgPSBpci5zaXplLmhlaWdodCAvIGNlaWxmKGlyLnNpemUu
aGVpZ2h0IC8gaW1hZ2VIZWlnaHQpOwotICAgICAgICBzY2FsZVkgPSBuZXdIZWlnaHQgLyBmci5z
aXplLmhlaWdodDsKLSAgICB9Ci0gICAgCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRy
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlWCwgc2NhbGVZKTsKLQot
ICAgIC8vIFBvc3NpYmxlIG9wdGltaXphdGlvbjogIFdlIG1heSB3YW50IHRvIGNhY2hlIHRoZSBD
R1BhdHRlcm5SZWYgICAgCi0gICAgQ0dQYXR0ZXJuUmVmIHBhdHRlcm4gPSBDR1BhdHRlcm5DcmVh
dGUodGhpcywgQ0dSZWN0TWFrZShmci5vcmlnaW4ueCwgZnIub3JpZ2luLnksIHRpbGVTaXplLndp
ZHRoLCB0aWxlU2l6ZS5oZWlnaHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0sIHRpbGVTaXplLndpZHRoLCB0aWxlU2l6ZS5oZWln
aHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKLSAgICBp
ZiAocGF0dGVybikgewotICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQtPnBsYXRm
b3JtQ29udGV4dCgpOwotICAgIAotICAgICAgICAvLyBXZSB3YW50IHRvIGNvbnN0cnVjdCB0aGUg
cGhhc2Ugc3VjaCB0aGF0IHRoZSBwYXR0ZXJuIGlzIGNlbnRlcmVkICh3aGVuIHN0cmV0Y2ggaXMg
bm90Ci0gICAgICAgIC8vIHNldCBmb3IgYSBwYXJ0aWN1bGFyIHJ1bGUpLgotICAgICAgICBmbG9h
dCBoUGhhc2UgPSBzY2FsZVggKiBmci5vcmlnaW4ueDsKLSAgICAgICAgZmxvYXQgdlBoYXNlID0g
c2NhbGVZICogKHRpbGVTaXplLmhlaWdodCAtIGZyLm9yaWdpbi55KTsKLSAgICAgICAgaWYgKGhS
dWxlID09IEltYWdlOjpSZXBlYXRUaWxlKQotICAgICAgICAgICAgaFBoYXNlIC09IGZtb2RmKGly
LnNpemUud2lkdGgsIHNjYWxlWCAqIHRpbGVTaXplLndpZHRoKSAvIDIuMGY7Ci0gICAgICAgIGlm
ICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAgICAgIHZQaGFzZSAtPSBmbW9k
Zihpci5zaXplLmhlaWdodCwgc2NhbGVZICogdGlsZVNpemUuaGVpZ2h0KSAvIDIuMGY7Ci0gICAg
ICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgLy8gRklYTUU6IFJlYWxseSB3YW50IGEg
cHVibGljIEFQSSBmb3IgdGhpcy4KLSAgICAgICAgd2tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFj
ZShjb250ZXh0LCBDR1BvaW50TWFrZShpci5vcmlnaW4ueCAtIGhQaGFzZSwgaXIub3JpZ2luLnkg
LSB2UGhhc2UpKTsKLSNlbmRpZgotCi0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBwYXR0ZXJuU3Bh
Y2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwotICAgICAgICBDR0NvbnRleHRT
ZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2UpOwotICAgICAgICBDR0NvbG9y
U3BhY2VSZWxlYXNlKHBhdHRlcm5TcGFjZSk7Ci0KLSAgICAgICAgQ0dGbG9hdCBwYXR0ZXJuQWxw
aGEgPSAxOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsUGF0dGVybihjb250ZXh0LCBwYXR0ZXJu
LCAmcGF0dGVybkFscGhhKTsKLQotICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
b3ApOwotICAgICAgICAKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgaXIpOwot
Ci0gICAgICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVybik7Ci0gICAgfQotCi0gICAgY3R4dC0+
cmVzdG9yZSgpOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLX0KLQotfQotCi0jZW5kaWYgLy8g
UExBVEZPUk0oQ0cpCkluZGV4OiBwbGF0Zm9ybS9jZy9QREZEb2N1bWVudEltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMTY1
NDEpCisrKyBwbGF0Zm9ybS9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTUgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZShDRkRhdGFSZWYgZGF0
YSkKK1BERkRvY3VtZW50SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fZG9jdW1lbnQo
MCkKKyAgICAsIG1fcm90YXRpb24oMGYpCisgICAgLCBtX2N1cnJlbnRQYWdlKC0xKQogewotICAg
IGlmIChkYXRhKSB7Ci0gICAgICAgIENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlciA9IENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKTsKLSAgICAgICAgbV9kb2N1bWVudCA9
IENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyKTsKLSAgICAgICAg
Q0dEYXRhUHJvdmlkZXJSZWxlYXNlKGRhdGFQcm92aWRlcik7Ci0gICAgfQotICAgIG1fY3VycmVu
dFBhZ2UgPSAtMTsKLSAgICBzZXRDdXJyZW50UGFnZSgwKTsKIH0KIAogUERGRG9jdW1lbnRJbWFn
ZTo6flBERkRvY3VtZW50SW1hZ2UoKQpAQCAtMTA3LDcgKzEwNCwyMyBAQCBpbnQgUERGRG9jdW1l
bnRJbWFnZTo6cGFnZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudCA/IENHUERG
RG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKG1fZG9jdW1lbnQpIDogMDsKIH0KIAotdm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKSBjb25zdAorSW50U2l6ZSBQREZEb2N1bWVudEltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW50U2l6ZSgoaW50KW1fbWVkaWFCb3guc2l6ZSgpLndpZHRoKCksIChpbnQpbV9t
ZWRpYUJveC5zaXplKCkuaGVpZ2h0KCkpOworfQorCitib29sIFBERkRvY3VtZW50SW1hZ2U6OnNl
dE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sK
KyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkICYmICFtX2RvY3VtZW50ICYmIGRhdGEpIHsKKyAgICAg
ICAgQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKGRhdGEpOworICAgICAgICBtX2RvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0
ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIpOworICAgICAgICBDR0RhdGFQcm92aWRlclJlbGVh
c2UoZGF0YVByb3ZpZGVyKTsKKyAgICAgICAgc2V0Q3VycmVudFBhZ2UoMCk7CisgICAgfQorICAg
IHJldHVybiBtX2RvY3VtZW50OyAvLyByZXR1cm4gdHJ1ZSBpZiBzaXplIGlzIGF2YWlsYWJsZQor
fQorCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8IG1fY3VycmVudFBh
Z2UgPT0gLTEpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IHBsYXRmb3JtL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9jZy9QREZEb2N1bWVudEltYWdlLmgJKHJl
dmlzaW9uIDE2NTQxKQorKysgcGxhdGZvcm0vY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2lmbmRl
ZiBQREZEb2N1bWVudEltYWdlX0gKKyNkZWZpbmUgUERGRG9jdW1lbnRJbWFnZV9ICisKKyNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKIAogI2lmIFBMQVRGT1JNKENHKQogCkBAIC0zNCwxNiArMzcsMjAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCi0gICAgY2xhc3Mg
UERGRG9jdW1lbnRJbWFnZSB7CisgICAgY2xhc3MgUERGRG9jdW1lbnRJbWFnZSA6IHB1YmxpYyBJ
bWFnZSB7CiAgICAgcHVibGljOgotICAgICAgICBQREZEb2N1bWVudEltYWdlKENGRGF0YVJlZik7
CisgICAgICAgIFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogPSAwKTsK
ICAgICAgICAgflBERkRvY3VtZW50SW1hZ2UoKTsKLQotICAgICAgICBGbG9hdFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFCb3guc2l6ZSgpOyB9Ci0gICAgICAgIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpIGNvbnN0OworICAgICAgICAKKyAgICAgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIHNldE5h
dGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICAK
KyAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KSB7IHJl
dHVybiAwOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGlu
dCBwYWdlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yKTsKKworICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7CiAgICAgICAg
IGludCBwYWdlQ291bnQoKSBjb25zdDsKICAgICAgICAgdm9pZCBhZGp1c3RDVE0oR3JhcGhpY3ND
b250ZXh0KikgY29uc3Q7CiAKQEAgLTUzLDcgKzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBmbG9hdCBtX3JvdGF0aW9uOwogICAgICAgICBpbnQgbV9jdXJyZW50UGFnZTsKICAg
ICB9OwotCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDRykKKworI2VuZGlmIC8vIFBERkRvY3Vt
ZW50SW1hZ2VfSApJbmRleDogcGxhdGZvcm0vbWFjL0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL21hYy9JbWFnZU1hYy5tbQkocmV2aXNpb24gMTY1NDEpCisrKyBwbGF0Zm9ybS9t
YWMvSW1hZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiSW1h
Z2UuaCIKLQotI2ltcG9ydCAiRmxvYXRSZWN0LmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFz
LmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlBERkRvY3VtZW50SW1h
Z2UuaCIKLSNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW1wb3J0ICJXZWJDb3JlRnJhbWVC
cmlkZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS8vIEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLQotdm9pZCBJbWFnZTo6aW5pdFBsYXRmb3JtRGF0YSgpCi17
Ci0gICAgbV9uc0ltYWdlID0gMDsKLSAgICBtX3RpZmZSZXAgPSAwOwotfQotCi12b2lkIEltYWdl
OjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkKLXsKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpICE9
IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX25zSW1hZ2UpIHsKLSAgICAgICAgQ0ZS
ZWxlYXNlKG1fbnNJbWFnZSk7Ci0gICAgICAgIG1fbnNJbWFnZSA9IDA7Ci0gICAgfQotCi0gICAg
aWYgKG1fdGlmZlJlcCkgewotICAgICAgICBDRlJlbGVhc2UobV90aWZmUmVwKTsKLSAgICAgICAg
bV90aWZmUmVwID0gMDsKLSAgICB9Ci19Ci0KLUltYWdlKiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVu
ZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlRnJhbWVCcmlkZ2UgY2xhc3NdXTsKLSAgICBOU1N0
cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmlu
Z1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInRpZmYiXTsKLSAgICBOU0RhdGEgKm5hbWVk
SW1hZ2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmltYWdlUGF0aF07Ci0g
ICAgaWYgKG5hbWVkSW1hZ2VEYXRhKSB7Ci0gICAgICAgIEltYWdlKiBpbWFnZSA9IG5ldyBJbWFn
ZTsKLSAgICAgICAgaW1hZ2UtPnNldE5hdGl2ZURhdGEoKENGRGF0YVJlZiluYW1lZEltYWdlRGF0
YSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBpbWFnZTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAg
Ly8gRklYTUU6IFdvdWxkIGJlIGJldHRlciBpZiB0aGlzIHdhcyBsb29raW5nIGluIGEgc2V0IHJh
dGhlciB0aGFuIGFuIE5TQXJyYXkuCi0gICAgLy8gRklYTUU6IFdvdWxkIGJlIGJldHRlciBub3Qg
dG8gY29udmVydCB0byBhbiBOU1N0cmluZyBqdXN0IHRvIGNoZWNrIGlmIGEgdHlwZSBpcyBzdXBw
b3J0ZWQuCi0gICAgcmV0dXJuIFtbV2ViQ29yZUZyYW1lQnJpZGdlIHN1cHBvcnRlZEltYWdlUmVz
b3VyY2VNSU1FVHlwZXNdIGNvbnRhaW5zT2JqZWN0OnR5cGVdOwotfQotCi1DRkRhdGFSZWYgSW1h
Z2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbigpCi17Ci0gICAgaWYgKG1fdGlmZlJlcCkKLSAgICAg
ICAgcmV0dXJuIG1fdGlmZlJlcDsKLSAgICAKLSAgICB1bnNpZ25lZCBudW1GcmFtZXMgPSBmcmFt
ZUNvdW50KCk7Ci0gICAgCi0gICAgLy8gSWYgbnVtRnJhbWVzIGlzIHplcm8sIHdlIGtub3cgZm9y
IGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQotICAgIC8vIEV2ZW4g
dGhvdWdoIHRoZSBjYWxsIHRvIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdpbGwg
ZmFpbCBhbmQgd2UnbGwgaGFuZGxlIGl0IGdyYWNlZnVsbHksCi0gICAgLy8gaW4gY2VydGFpbiBj
aXJjdW1zdGFuY2VzIHRoYXQgY2FsbCB3aWxsIHNwYW0gdGhlIGNvbnNvbGUgd2l0aCBhbiBlcnJv
ciBtZXNzYWdlCi0gICAgaWYgKCFudW1GcmFtZXMpCi0gICAgICAgIHJldHVybiAwOwotICAgIENG
TXV0YWJsZURhdGFSZWYgZGF0YSA9IENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCk7Ci0gICAgLy8g
RklYTUU6ICBVc2UgdHlwZSBrQ0dJbWFnZVR5cGVJZGVudGlmaWVyVElGRiBjb25zdGFudCBvbmNl
IGlzIGJlY29tZXMgYXZhaWxhYmxlIGluIHRoZSBBUEkKLSAgICBDR0ltYWdlRGVzdGluYXRpb25S
ZWYgZGVzdGluYXRpb24gPSBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShkYXRhLCBD
RlNUUigicHVibGljLnRpZmYiKSwgbnVtRnJhbWVzLCAwKTsKLSAgICBpZiAoIWRlc3RpbmF0aW9u
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1G
cmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4
KGkpOwotICAgICAgICBpZiAoIWNnSW1hZ2UpIHsKLSAgICAgICAgICAgIENGUmVsZWFzZShkZXN0
aW5hdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gMDsgICAgCi0gICAgICAgIH0KLSAgICAgICAg
Q0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24sIGNnSW1hZ2UsIDApOwotICAg
IH0KLSAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbik7Ci0gICAgQ0ZS
ZWxlYXNlKGRlc3RpbmF0aW9uKTsKLQotICAgIG1fdGlmZlJlcCA9IGRhdGE7Ci0gICAgcmV0dXJu
IG1fdGlmZlJlcDsKLX0KLQotTlNJbWFnZSogSW1hZ2U6OmdldE5TSW1hZ2UoKQotewotICAgIGlm
IChtX25zSW1hZ2UpCi0gICAgICAgIHJldHVybiBtX25zSW1hZ2U7Ci0KLSAgICBDRkRhdGFSZWYg
ZGF0YSA9IGdldFRJRkZSZXByZXNlbnRhdGlvbigpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgCi0gICAgbV9uc0ltYWdlID0gSGFyZFJldGFpbldpdGhOU1JlbGVhc2Uo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6KE5TRGF0YSopZGF0YV0pOwotICAgIHJldHVy
biBtX25zSW1hZ2U7Ci19Ci0KLX0KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMTY1NDEpCisr
KyByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIAorI2lu
Y2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC00Mjcs
NyArNDI4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y2FsY01pbk1heFdpZHRoKCkKIAogSW1hZ2Uq
IFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQogewotICAgIHN0YXRpYyBJbWFnZSBzaGFyZWROdWxs
SW1hZ2U7CisgICAgc3RhdGljIEJpdG1hcEltYWdlIHNoYXJlZE51bGxJbWFnZTsKICAgICByZXR1
cm4gJnNoYXJlZE51bGxJbWFnZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10720</attachid>
            <date>2006-09-23 03:03:02 -0700</date>
            <delta_ts>2006-12-27 22:02:11 -0800</delta_ts>
            <desc>Updated version of my original hack-and-slash patch (now with all the files)</desc>
            <filename>svgimage.patch</filename>
            <type>text/plain</type>
            <size>84535</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NTQxKQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNyAr
MzEzLDcgQEAKIAkJNjU4MkExNTgwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UG9pbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0QTA5
OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLzsgfTsKIAkJNjU4MkExNTkwOTk5
OUQ2RDAwQkVFQjZEIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTRCMDk5OTlENkMwMEJFRUI2RCAvKiBGbG9hdFJl
Y3RNYWMubW0gKi87IH07CiAJCTY1ODJBMTVBMDk5OTlENkQwMEJFRUI2RCAvKiBGbG9hdFNpemVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgy
QTE0QzA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRTaXplTWFjLm1tICovOyB9OwotCQk2NTgyQTE1
QjA5OTk5RDZEMDBCRUVCNkQgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0RDA5OTk5RDZDMDBCRUVCNkQgLyogSW1hZ2VN
YWMubW0gKi87IH07CisJCTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJB
MTREMDk5OTlENkMwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1hYy5tbSAqLzsgfTsKIAkJNjU4MkEx
NUQwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFBvaW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNEYwOTk5OUQ2RDAwQkVFQjZEIC8qIElu
dFBvaW50TWFjLm1tICovOyB9OwogCQk2NTgyQTE1RTA5OTk5RDZEMDBCRUVCNkQgLyogSW50UmVj
dE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
ODJBMTUwMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFjLm1tICovOyB9OwogCQk2NTgyQTE1
RjA5OTk5RDZEMDBCRUVCNkQgLyogSW50U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTUxMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRT
aXplTWFjLm1tICovOyB9OwpAQCAtMTIxMCw2ICsxMjEwLDEwIEBACiAJCUE4MzNDODBDMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3Bw
ICovOyB9OwogCQlBODMzQzgwRDBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MzNDODBCMEEyQ0YyNTYw
MEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovOyB9OwogCQlBODMzQzg1MjBBMkNGNTI4MDBENTc2NjQg
LyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2NTgxRTYwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0
b3J5LmNwcCAqLzsgfTsKKwkJQTgzOTgyNzkwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODM5ODI3
NzBBQzQxNTM5MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuaCAqLzsgfTsKKwkJQTgzOTgyN0EwQUM0
MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Mzk4Mjc4MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJ
bWFnZS5jcHAgKi87IH07CisJCUE4Mzk4MkJFMEFDNDE5NzUwMEQzQjBENCAvKiBTVkdJbWFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzOTgyQkMw
QUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmggKi87IH07CisJCUE4Mzk4MkJGMEFDNDE5NzUw
MEQzQjBENCAvKiBTVkdJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODM5ODJCRDBBQzQxOTc1MDBEM0IwRDQgLyogU1ZHSW1hZ2UuY3BwICov
OyB9OwogCQlBODQxNUY5QTBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NDE1RjkxMEFDMTBD
NUQwMEY3RDBERiAvKiBLQ2FudmFzQ2xpcHBlci5oICovOyB9OwogCQlBODQxNUY5QjBBQzEwQzVE
MDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0MTVGOTIwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXND
bGlwcGVyLmNwcCAqLzsgfTsKIAkJQTg0MTVGOUMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg0MTVGOTMwQUMxMEM1RDAwRjdEMERGIC8qIEtDYW52YXNSZXNvdXJjZS5oICovOyB9OwpAQCAt
MjAwMSw3ICsyMDA1LDcgQEAKIAkJQkM4MzdDNzIwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9p
bnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzgzN0M2NzBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRQb2ludENHLmNwcCAqLzsgfTsKIAkJQkM4
MzdDNzMwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UmVjdENHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODM3QzY4MEE5RDBEMUEwMDZCMTg2QSAv
KiBGbG9hdFJlY3RDRy5jcHAgKi87IH07CiAJCUJDODM3Qzc0MEE5RDBEMUEwMDZCMTg2QSAvKiBG
bG9hdFNpemVDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzgzN0M2OTBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRTaXplQ0cuY3BwICovOyB9Owot
CQlCQzgzN0M3NTBBOUQwRDFBMDA2QjE4NkEgLyogSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgzN0M2QTBBOUQwRDFBMDA2QjE4NkEg
LyogSW1hZ2VDRy5jcHAgKi87IH07CisJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRt
YXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDODM3QzZBMEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsK
IAkJQkM4MzdDNzcwQTlEMEQxQTAwNkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MzdDNkMwQTlEMEQxQTAw
NkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3BwICovOyB9OwogCQlCQzgzN0M3ODBBOUQwRDFBMDA2
QjE4NkEgLyogSW50UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzgzN0M2RDBBOUQwRDFBMDA2QjE4NkEgLyogSW50UG9pbnRDRy5jcHAg
Ki87IH07CiAJCUJDODM3Qzc5MEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MzdDNkUwQTlEMEQx
QTAwNkIxODZBIC8qIEludFJlY3RDRy5jcHAgKi87IH07CkBAIC0yNjY5LDcgKzI2NzMsNyBAQAog
CQk2NTgyQTE0QTA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0QjA5OTk5RDZDMDBCRUVCNkQgLyogRmxvYXRS
ZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0
UmVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4MkExNEMwOTk5OUQ2
QzAwQkVFQjZEIC8qIEZsb2F0U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGbG9hdFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTY1ODJBMTREMDk5OTlENkMwMEJFRUI2RCAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjU4MkExNEQwOTk5OUQ2QzAwQkVFQjZEIC8qIEJpdG1hcEltYWdlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJpdG1hcEltYWdl
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE0RjA5OTk5RDZEMDBC
RUVCNkQgLyogSW50UG9pbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSW50UG9pbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
ODJBMTUwMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFJlY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1ODJBMTUxMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRTaXplTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFNpemVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDgwLDYgKzM0ODQsMTAgQEAKIAkJQTgzM0M3
RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzM0M4MEEwQTJD
RjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBYTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MzNDODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTgzOTgyNzcwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBODM5ODI3ODBBQzQxNTM5MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgzOTgyQkMwQUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0lt
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4Mzk4MkJEMEFDNDE5NzUwMEQzQjBENCAvKiBTVkdJ
bWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NDE1RjkxMEFDMTBDNUQwMEY3RDBE
RiAvKiBLQ2FudmFzQ2xpcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
Q2FudmFzQ2xpcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODQxNUY5MjBB
QzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc0NsaXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gS0NhbnZhc0NsaXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODQxNUY5MzBBQzEwQzVEMDBGN0QwREYgLyogS0NhbnZhc1Jlc291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtDYW52YXNSZXNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQwNyw3ICs0NDE1LDcgQEAKIAkJQkM4MzdDNjcw
QTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRQb2ludENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM4MzdDNjgwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UmVjdENHLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJlY3RDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODM3QzY5MEE5RDBEMUEwMDZCMTg2QSAvKiBGbG9h
dFNpemVDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRT
aXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzgzN0M2QTBBOUQwRDFB
MDA2QjE4NkEgLyogSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODM3QzZB
MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM4MzdDNkMwQTlEMEQxQTAwNkIxODZBIC8qIEltYWdlU291cmNlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgzN0M2RDBBOUQwRDFBMDA2QjE4NkEg
LyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODM3QzZFMEE5
RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludFJlY3RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjQ0LDYgKzUyNTIsNyBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTgyQTE0RDA5
OTk5RDZDMDBCRUVCNkQgLyogQml0bWFwSW1hZ2VNYWMubW0gKi8sCiAJCQkJNjVBNjQwRjAwNTMz
QkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovLAogCQkJCTY1RjgwNjk3MDU0RDlG
ODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi8sCiAJCQkJMkQ5MDY2MEIwNjY1RDkz
NzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovLApAQCAtNTI2Niw3ICs1Mjc1LDYgQEAKIAkJ
CQlCQzZEQjREMzBBMUFGRUVGMDBFNUNEMTQgLyogR2x5cGhNYXBNYWMuY3BwICovLAogCQkJCTkz
NTM2N0U4MDlBRjc3RUYwMEQzNUNENiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCiAJCQkJ
MDY2Qzc3M0QwQUI2MDUzRjAwMjM4Q0M0IC8qIEljb25NYWMubW0gKi8sCi0JCQkJNjU4MkExNEQw
OTk5OUQ2QzAwQkVFQjZEIC8qIEltYWdlTWFjLm1tICovLAogCQkJCTY1ODJBMTRGMDk5OTlENkQw
MEJFRUI2RCAvKiBJbnRQb2ludE1hYy5tbSAqLywKIAkJCQk2NTgyQTE1MDA5OTk5RDZEMDBCRUVC
NkQgLyogSW50UmVjdE1hYy5tbSAqLywKIAkJCQk2NTgyQTE1MTA5OTk5RDZEMDBCRUVCNkQgLyog
SW50U2l6ZU1hYy5tbSAqLywKQEAgLTUyNzQsMTYgKzUyODIsMTcgQEAKIAkJCQk2NTkzOTIzOTA5
QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLywKIAkJCQk5MzUyMDg0NDA5QkQ0M0I5MDBG
MjAzOEQgLyogTGFuZ3VhZ2UubW0gKi8sCiAJCQkJRjU4Nzg1MTQwMkRFMzc1OTAxRUE0MTIyIC8q
IExpc3RCb3hNYWMubW0gKi8sCi0JCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCisJCQkJMDZFODFFRUIwQUI1
REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKIAkJCQk5
MzUyMDdCRjA5QkQ0MTIwMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5nc01hYy5tbSAqLywKIAkJ
CQk2NUY1MzgyNDA5QjJCNTc1MDBGM0RDNEEgLyogbWFjLWVuY29kaW5ncy50eHQgKi8sCiAJCQkJ
OTM1QzQ3NkYwOUFDNEQ3MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudE1hYy5tbSAqLywK
IAkJCQlCQzNGQ0FBODBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCAqLywK
KwkJCQlCQzdCMkFGOTA0NTA4MjQxMDBBODAwMEYgLyogUGxhdGZvcm1TY3JvbGxCYXJNYWMubW0g
Ki8sCiAJCQkJQTgyMzk4QTcwOUIzQUNGNTAwQjYwNjQxIC8qIFBsdWdJbkluZm9TdG9yZU1hYy5t
bSAqLywKIAkJCQlGNTg3ODREMjAyREUzNzU5MDFFQTQxMjIgLyogUG9wVXBCdXR0b25NYWMubW0g
Ki8sCisJCQkJNjU0NUY2NzUwOUI4MzAxODAwMTMwMDZGIC8qIFJlc291cmNlTG9hZGVyTWFjLm1t
ICovLAogCQkJCTY1ODJBMTU0MDk5OTlENkQwMEJFRUI2RCAvKiBTY3JlZW5NYWMubW0gKi8sCi0J
CQkJQkM3QjJBRjkwNDUwODI0MTAwQTgwMDBGIC8qIFBsYXRmb3JtU2Nyb2xsQmFyTWFjLm1tICov
LAogCQkJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxCYXIuY3BwICovLAogCQkJ
CTkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAogCQkJCTkz
MzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5jcHAgKi8sCkBAIC01Mjk0
LDcgKzUzMDMsNiBAQAogCQkJCTY1ODJBMTU1MDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1UaW1l
TWFjLmNwcCAqLywKIAkJCQk5MzUyMDcxQjA5QkQzQkJCMDBGMjAzOEQgLyogVGV4dEJvdW5kYXJp
ZXMubW0gKi8sCiAJCQkJRjU4Nzg1MTIwMkRFMzc1OTAxRUE0MTIyIC8qIFRleHRGaWVsZE1hYy5t
bSAqLywKLQkJCQk2NTQ1RjY3NTA5QjgzMDE4MDAxMzAwNkYgLyogUmVzb3VyY2VMb2FkZXJNYWMu
bW0gKi8sCiAJCQkJRjU1MTdEQzIwMzFBQjU2MzAxQTgwMTgwIC8qIFdlYkNvcmVIaXN0b3J5Lmgg
Ki8sCiAJCQkJRjU1MTdEQzMwMzFBQjU2MzAxQTgwMTgwIC8qIFdlYkNvcmVIaXN0b3J5Lm0gKi8s
CiAJCQkJODRCMkIxRjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCAq
LywKQEAgLTU3NzcsMTMgKzU3ODUsMTMgQEAKIAkJCQlCQzgzN0M2ODBBOUQwRDFBMDA2QjE4NkEg
LyogRmxvYXRSZWN0Q0cuY3BwICovLAogCQkJCUJDODM3QzY5MEE5RDBEMUEwMDZCMTg2QSAvKiBG
bG9hdFNpemVDRy5jcHAgKi8sCiAJCQkJOTM2QkREMUMwQTAzMUFFQjAwNERGNEFCIC8qIEdyYXBo
aWNzQ29udGV4dENHLmNwcCAqLywKLQkJCQlCQzgzN0M2QTBBOUQwRDFBMDA2QjE4NkEgLyogSW1h
Z2VDRy5jcHAgKi8sCisJCQkJQkM4MzdDQjUwQTlEMTBGRTAwNkIxODZBIC8qIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZS5oICovLAorCQkJCUJDODM3QzZBMEE5RDBEMUEwMDZCMTg2QSAv
KiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQlCQzgzN0M2QzBBOUQwRDFBMDA2QjE4NkEgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgKi8sCiAJCQkJQkM4MzdDNkQwQTlEMEQxQTAwNkIxODZBIC8qIElu
dFBvaW50Q0cuY3BwICovLAogCQkJCUJDODM3QzZFMEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRSZWN0
Q0cuY3BwICovLAogCQkJCUJDODM3QzZGMEE5RDBEMUEwMDZCMTg2QSAvKiBJbnRTaXplQ0cuY3Bw
ICovLAogCQkJCTkzMDMyQ0M3MDlBRUMzNDMwMEY4MkExOCAvKiBQYXRoQ0cuY3BwICovLAotCQkJ
CUJDODM3Q0I1MEE5RDEwRkUwMDZCMTg2QSAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUuaCAqLywKIAkJCQlCQzgzN0M3MDBBOUQwRDFBMDA2QjE4NkEgLyogUERGRG9jdW1lbnRJbWFn
ZS5jcHAgKi8sCiAJCQkJQkM4MzdDNzEwQTlEMEQxQTAwNkIxODZBIC8qIFBERkRvY3VtZW50SW1h
Z2UuaCAqLywKIAkJCSk7CkBAIC02ODQyLDkgKzY4NTAsNiBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5
MDA2MUExMjMgLyogcGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKLQkJCQk5MzAz
MkNDQzA5QUVDMzYyMDBGODJBMTggLyogY2cgKi8sCi0JCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVF
QjZEIC8qIG1hYyAqLywKIAkJCQlBODVEN0E4QzA4NzlFQzY0MDA2QTkxNzIgLyogQWZmaW5lVHJh
bnNmb3JtLmNwcCAqLywKIAkJCQlBODVEN0E4RDA4NzlFQzY0MDA2QTkxNzIgLyogQWZmaW5lVHJh
bnNmb3JtLmggKi8sCiAJCQkJQkNGQjJGNzQwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmNwcCAq
LywKQEAgLTY4NTQsNiArNjg1OSwxMCBAQAogCQkJCTkzQ0Q0RkQ3MDk5NUY5RUEwMDdFQ0M5NyAv
KiBBdG9taWNTdHJpbmcuY3BwICovLAogCQkJCTkzQ0Q0RkQ4MDk5NUY5RUEwMDdFQ0M5NyAvKiBB
dG9taWNTdHJpbmcuaCAqLywKIAkJCQk5M0NENEZEOTA5OTVGOUVBMDA3RUNDOTcgLyogQXRvbWlj
U3RyaW5nSW1wbC5oICovLAorCQkJCUE4Mzk4Mjc4MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJ
bWFnZS5jcHAgKi8sCisJCQkJQTgzOTgyNzcwQUM0MTUzOTAwRDNCMEQ0IC8qIEJpdG1hcEltYWdl
LmggKi8sCisJCQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovLAorCQkJCTkzMDMy
Q0NDMDlBRUMzNjIwMEY4MkExOCAvKiBjZyAqLywKIAkJCQk2NUY1MzgyMDA5QjJCNTU3MDBGM0RD
NEEgLyogY2hhcmFjdGVyLXNldHMudHh0ICovLAogCQkJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0
NyAvKiBDaGFyc2V0RGF0YS5oICovLAogCQkJCUJDQzhDRkM4MDk4NkNEMjQwMDE0MEJGMiAvKiBD
b2xvci5jcHAgKi8sCkBAIC02OTIxLDYgKzY5MzAsNyBAQAogCQkJCTkzNTIwN0JEMDlCRDQxMEEw
MEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi8sCiAJCQkJQTgyMzlERkUwOUIzQ0Y4QTAw
QjYwNjQxIC8qIExvZ2dpbmcuY3BwICovLAogCQkJCUE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAv
KiBMb2dnaW5nLmggKi8sCisJCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZEIC8qIG1hYyAqLywK
IAkJCQk2NUY1MzgyMTA5QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICov
LAogCQkJCUFBOThCODdDMEFBQTAyRjgwMDFBNDRDMiAvKiBQYXRoLmNwcCAqLywKIAkJCQk5MzAz
MkNDOTA5QUVDMzRCMDBGODJBMTggLyogUGF0aC5oICovLApAQCAtNjk1OSw2ICs2OTY5LDggQEAK
IAkJCQk5MzEyNkY2MDA5RDdBNzM2MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5oICovLAogCQkJCTkz
Q0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQk5M0NENEZE
RDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oICovLAorCQkJCUE4Mzk4MkJEMEFDNDE5
NzUwMEQzQjBENCAvKiBTVkdJbWFnZS5jcHAgKi8sCisJCQkJQTgzOTgyQkMwQUM0MTk3NTAwRDNC
MEQ0IC8qIFNWR0ltYWdlLmggKi8sCiAJCQkJOTNFNjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8qIFN5
c3RlbVRpbWUuaCAqLywKIAkJCQk5MzUyMDcxODA5QkQzQkE1MDBGMjAzOEQgLyogVGV4dEJvdW5k
YXJpZXMuaCAqLywKIAkJCQk5MzJDQTdDNDBBQUEyMEQyMDBBRDFGQUQgLyogVGV4dENvZGVjTGF0
aW4xLmNwcCAqLywKQEAgLTg0NTAsNiArODQ2Miw4IEBACiAJCQkJQTg0MTVGOUUwQUMxMEM1RDAw
RjdEMERGIC8qIEtDYW52YXNNYXNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NDE1RkEwMEFD
MTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNG
Q0FBOTBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE4Mzk4Mjc5MEFDNDE1MzkwMEQzQjBENCAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTgzOTgyQkUwQUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTg4ODUsNyArODg5OSw3IEBACiAJCQkJNjU4MkExNTgwOTk5OUQ2RDAwQkVF
QjZEIC8qIEZsb2F0UG9pbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2NTgyQTE1OTA5OTk5
RDZEMDBCRUVCNkQgLyogRmxvYXRSZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkEx
NUEwOTk5OUQ2RDAwQkVFQjZEIC8qIEZsb2F0U2l6ZU1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTY1ODJBMTVCMDk5OTlENkQwMEJFRUI2RCAvKiBCaXRtYXBJbWFnZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1ODJBMTVEMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRQb2ludE1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTY1ODJBMTVFMDk5OTlENkQwMEJFRUI2RCAvKiBJbnRSZWN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNUYwOTk5OUQ2RDAwQkVFQjZEIC8qIEludFNp
emVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTkzMDMsNyArOTMxNyw3IEBACiAJCQkJQkM4MzdD
NzIwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0UG9pbnRDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzgzN0M3MzBBOUQwRDFBMDA2QjE4NkEgLyogRmxvYXRSZWN0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM4MzdDNzQwQTlEMEQxQTAwNkIxODZBIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBJbWFnZUNHLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDODM3Qzc1MEE5RDBEMUEwMDZCMTg2QSAvKiBCaXRtYXBJbWFn
ZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc3MEE5RDBEMUEwMDZCMTg2QSAvKiBJ
bWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc4MEE5RDBEMUEwMDZC
MTg2QSAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODM3Qzc5MEE5RDBE
MUEwMDZCMTg2QSAvKiBJbnRSZWN0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTM4LDYgKzk1
NTIsOCBAQAogCQkJCUE4NDE1RjlGMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFzTWFza2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4NDE1RkExMEFDMTBDNUQwMEY3RDBERiAvKiBLQ2FudmFz
TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NDE1RkEyMEFDMTBDNUQwMEY3RDBERiAv
KiBLQ2FudmFzRmlsdGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODM5ODI3QTBBQzQxNTM5
MDBEM0IwRDQgLyogQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTgzOTgyQkYw
QUM0MTk3NTAwRDNCMEQ0IC8qIFNWR0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogaHRt
bC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMTY1NDEpCisrKyBodG1sL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsK
LSAgICBjLT50cmFuc2xhdGUodHgsIHR5KTsKKyAgICBjLT50cmFuc2xhdGUoRmxvYXRTaXplKHR4
LCB0eSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29s
b3IoY29uc3QgU3RyaW5nJiBjb2xvcikKSW5kZXg6IGxvYWRlci9DYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gMTY1NDEpCisrKyBsb2FkZXIvQ2FjaGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkWFNM
U3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCiAKQEAgLTg1LDcgKzg1
LDcgQEAgdm9pZCBDYWNoZTo6aW5pdCgpCiAgICAgICAgIGRvY2xvYWRlcnMgPSBuZXcgSGFzaFNl
dDxEb2NMb2FkZXIqPjsKIAogICAgIGlmICghbnVsbEltYWdlKQotICAgICAgICBudWxsSW1hZ2Ug
PSBuZXcgSW1hZ2U7CisgICAgICAgIG51bGxJbWFnZSA9IG5ldyBCaXRtYXBJbWFnZTsKIAogICAg
IGlmICghYnJva2VuSW1hZ2UpCiAgICAgICAgIGJyb2tlbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKTsKSW5kZXg6IGxvYWRlci9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTY1NDEp
CisrKyBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMSArMzMs
MjkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCi0jaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkxvYWRlckZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKKyNpZmRlZiBQTEFURk9STShDRykKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCisj
ZW5kaWYKKworI2lmZGVmIFNWR19TVVBQT1JUCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNlbmRp
ZgorCiB1c2luZyBzdGQ6Om1heDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2UoRG9jTG9hZGVyKiBkbCwgY29uc3QgU3RyaW5nICZ1cmwsIENhY2hlUG9s
aWN5IGNhY2hlUG9saWN5LCB0aW1lX3QgX2V4cGlyZURhdGUpCiAgICAgOiBDYWNoZWRSZXNvdXJj
ZSh1cmwsIEltYWdlUmVzb3VyY2UsIGNhY2hlUG9saWN5LCBfZXhwaXJlRGF0ZSkKKyAgICAsIG1f
aW1hZ2UoMCkKICAgICAsIG1fZGF0YVNpemUoMCkKKyAgICAsIG1fZXJyb3JPY2N1cnJlZChmYWxz
ZSkKIHsKLSAgICBtX2ltYWdlID0gMDsKLSAgICBtX2Vycm9yT2NjdXJyZWQgPSBmYWxzZTsKICAg
ICBtX3N0YXR1cyA9IFVua25vd247CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKIH0KQEAgLTExNCwx
MiArMTIyLDE5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFyKCkKIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBpZiBpdCBk
b2Vzbid0IHlldCBleGlzdC4KLSAgICBpZiAoIW1faW1hZ2UpCi0jaWYgX19BUFBMRV9fCi0gICAg
ICAgIG1faW1hZ2UgPSBuZXcgSW1hZ2UodGhpcywgUmVzcG9uc2VNSU1FVHlwZShtX3Jlc3BvbnNl
KSA9PSAiYXBwbGljYXRpb24vcGRmIik7Ci0jZWxzZQotICAgICAgICBtX2ltYWdlID0gbmV3IElt
YWdlKHRoaXMsIGZhbHNlKTsKKyAgICBpZiAoIW1faW1hZ2UpIHsKKyNpZmRlZiBQTEFURk9STShD
RykKKyAgICAgICAgaWYgKFJlc3BvbnNlTUlNRVR5cGUobV9yZXNwb25zZSkgPT0gImFwcGxpY2F0
aW9uL3BkZiIpCisgICAgICAgICAgICBtX2ltYWdlID0gbmV3IFBERkRvY3VtZW50SW1hZ2UodGhp
cyk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorI2lmIFNWR19TVVBQT1JUCisgICAgICAgIGlmIChS
ZXNwb25zZU1JTUVUeXBlKG1fcmVzcG9uc2UpID09ICJpbWFnZS9zdmcreG1sIikKKyAgICAgICAg
ICAgIG1faW1hZ2UgPSBuZXcgU1ZHSW1hZ2UodGhpcyk7CisgICAgICAgIGVsc2UKICNlbmRpZgor
ICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBCaXRtYXBJbWFnZSh0aGlzKTsKKyAgICB9CiB9CiAK
IFZlY3RvcjxjaGFyPiYgQ2FjaGVkSW1hZ2U6OmJ1ZmZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBhZGRlZFNpemUsIFJlcXVlc3QqIHJlcXVlc3QpCkluZGV4OiBsb2FkZXIvaWNvbi9JY29u
RGF0YUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvaWNvbi9JY29uRGF0YUNhY2hlLmNw
cAkocmV2aXNpb24gMTY1NDEpCisrKyBsb2FkZXIvaWNvbi9JY29uRGF0YUNhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkljb25EYXRhQ2FjaGUuaCIKIAotI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU1FMU3RhdGVtZW50LmgiCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSWNvbkRhdGFD
YWNoZTo6c2V0SW1hZ2VEYXRhKHVuc2lnbmUKICAgICAvLyBtYW5hZ2luZyBhbiBpbWFnZSB0aGF0
IHdhcyBjcmVhdGVkIHdpdGggYSBjb3B5IG9mIHRoaXMgcmF3IGltYWdlIGRhdGEuCiAgICAgaWYg
KG1faW1hZ2UpCiAgICAgICAgIGRlbGV0ZSBtX2ltYWdlOwotICAgIG1faW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKKyAgICBtX2ltYWdlID0gbmV3IEJpdG1hcEltYWdlKCk7CiAKICAgICAvLyBDb3B5IHRo
ZSBwcm92aWRlZCBkYXRhIGludG8gdGhlIGJ1ZmZlciBvZiB0aGUgbmV3IEltYWdlIG9iamVjdAog
ICAgIFZlY3RvcjxjaGFyPiYgZGF0YUJ1ZmZlciA9IG1faW1hZ2UtPmRhdGFCdWZmZXIoKTsKSW5k
ZXg6IHBsYXRmb3JtL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9CaXRt
YXBJbWFnZS5jcHAJKHJldmlzaW9uIDE2NTQxKQorKysgcGxhdGZvcm0vQml0bWFwSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2NCArMjUsMzYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZUFuaW1hdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLSNpZiBQTEFURk9STShDRykKLS8vIEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBt
YWtlIFBERiBhIHN1YmNsYXNzLgotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLy8gSW1hZ2UgQ2xhc3MKKy8vIEJpdG1hcEltYWdlIENs
YXNzCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAotSW1hZ2U6OkltYWdlKCkKLTogbV9jdXJyZW50RnJhbWUoMCksIG1fZnJhbWVzKDApLCBtX2Fu
aW1hdGlvbk9ic2VydmVyKDApLAotICBtX2ZyYW1lVGltZXIoMCksIG1fcmVwZXRpdGlvbkNvdW50
KDApLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCksCi0gIG1faXNTb2xpZENvbG9yKGZhbHNlKSwg
bV9hbmltYXRpbmdJbWFnZVR5cGUodHJ1ZSksIG1fYW5pbWF0aW9uRmluaXNoZWQoZmFsc2UpLAot
ICBtX2hhdmVTaXplKGZhbHNlKSwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQotewotI2lmIFBMQVRG
T1JNKENHKQotICAgIG1faXNQREYgPSBmYWxzZTsgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVu
IHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0gICAgbV9QREZEb2MgPSAwOwotI2VuZGlmCi0gICAg
aW5pdFBsYXRmb3JtRGF0YSgpOwotfQotCi1JbWFnZTo6SW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIsIGJvb2wgaXNQREYpCi0gOiBtX2N1cnJlbnRGcmFtZSgwKSwgbV9mcmFt
ZXMoMCksIG1fYW5pbWF0aW9uT2JzZXJ2ZXIoMCksCi0gIG1fZnJhbWVUaW1lcigwKSwgbV9yZXBl
dGl0aW9uQ291bnQoMCksIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKSwKLSAgbV9pc1NvbGlkQ29s
b3IoZmFsc2UpLCBtX2FuaW1hdGluZ0ltYWdlVHlwZSh0cnVlKSwgbV9hbmltYXRpb25GaW5pc2hl
ZChmYWxzZSksCi0gIG1faGF2ZVNpemUoZmFsc2UpLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi17
Ci0gICAgaW5pdFBsYXRmb3JtRGF0YSgpOwotI2lmIFBMQVRGT1JNKENHKQotICAgIG1faXNQREYg
PSBpc1BERjsgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEgc3ViY2xh
c3MuCi0gICAgbV9QREZEb2MgPSAwOwotI2VuZGlmCi0gICAgbV9hbmltYXRpb25PYnNlcnZlciA9
IG9ic2VydmVyOworQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2
ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX2lzU29saWRDb2xv
cihmYWxzZSkKKyAgICAsIG1fYW5pbWF0aW5nSW1hZ2VUeXBlKHRydWUpCisgICAgLCBtX2hhdmVT
aXplKGZhbHNlKQorICAgICwgbV9zaXplQXZhaWxhYmxlKGZhbHNlKQorewogfQogCi1JbWFnZTo6
fkltYWdlKCkKK0JpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQogewotICAgIGludmFsaWRhdGVE
YXRhKCk7CiAgICAgc3RvcEFuaW1hdGlvbigpOwotI2lmIFBMQVRGT1JNKENHKQotICAgIGRlbGV0
ZSBtX1BERkRvYzsgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgYSBQREYgaW1h
Z2Ugc3ViY2xhc3MuCi0jZW5kaWYKIH0KIAotdm9pZCBJbWFnZTo6aW52YWxpZGF0ZURhdGEoKQor
dm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZURhdGEoKQogewogICAgIC8vIERlc3Ryb3kgdGhl
IGNhY2hlZCBpbWFnZXMgYW5kIHJlbGVhc2UgdGhlbS4KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgp
KSB7CkBAIC05Miw3ICs2NCw3IEBAIHZvaWQgSW1hZ2U6OmludmFsaWRhdGVEYXRhKCkKICAgICB9
CiB9CiAKLXZvaWQgSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KQordm9pZCBCaXRtYXBJ
bWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCiB7CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9
IGZyYW1lQ291bnQoKTsKICAgICBpZiAoIW1fZnJhbWVzLnNpemUoKSAmJiBzaG91bGRBbmltYXRl
KCkpIHsgICAgICAgICAgICAKQEAgLTExNCwyMyArODYsOSBAQCB2b2lkIEltYWdlOjpjYWNoZUZy
YW1lKHNpemVfdCBpbmRleCkKICAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291
cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KIAotYm9vbCBJbWFnZTo6aXNOdWxs
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2l6ZSgpLmlzRW1wdHkoKTsKLX0KIAotSW50U2l6ZSBJ
bWFnZTo6c2l6ZSgpIGNvbnN0CitJbnRTaXplIEJpdG1hcEltYWdlOjpzaXplKCkgY29uc3QKIHsK
LSNpZiBQTEFURk9STShDRykKLSAgICAvLyBGSVhNRTogV2lsbCBnbyBhd2F5IHdoZW4gd2UgbWFr
ZSBQREYgYSBzdWJjbGFzcy4KLSAgICBpZiAobV9pc1BERikgewotICAgICAgICBpZiAobV9QREZE
b2MpIHsKLSAgICAgICAgICAgIEZsb2F0U2l6ZSBzaXplID0gbV9QREZEb2MtPnNpemUoKTsKLSAg
ICAgICAgICAgIHJldHVybiBJbnRTaXplKChpbnQpc2l6ZS53aWR0aCgpLCAoaW50KXNpemUuaGVp
Z2h0KCkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICAKICAgICBpZiAobV9z
aXplQXZhaWxhYmxlICYmICFtX2hhdmVTaXplKSB7CiAgICAgICAgIG1fc2l6ZSA9IG1fc291cmNl
LnNpemUoKTsKICAgICAgICAgbV9oYXZlU2l6ZSA9IHRydWU7CkBAIC0xMzgsNDUgKzk2LDggQEAg
SW50U2l6ZSBJbWFnZTo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KIAotYm9v
bCBJbWFnZTo6c2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQml0bWFwSW1hZ2U6
OnNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
IHsKLSAgICBpbnQgbGVuZ3RoID0gbV9kYXRhLnNpemUoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSNpZmRlZiBrSW1hZ2VCeXRlc0N1dG9mZgotICAgIC8vIFRo
aXMgaXMgYSBoYWNrIHRvIGhlbHAgd2l0aCB0ZXN0aW5nIGRpc3BsYXkgb2YgcGFydGlhbGx5LWxv
YWRlZCBpbWFnZXMuCi0gICAgLy8gVG8gZW5hYmxlIGl0LCBkZWZpbmUga0ltYWdlQnl0ZXNDdXRv
ZmYgdG8gYmUgYSBzaXplIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBpbWFnZSBmaWxlcwotICAg
IC8vIGJlaW5nIGxvYWRlZC4gVGhleSdsbCBuZXZlciBmaW5pc2ggbG9hZGluZy4KLSAgICBpZiAo
bGVuZ3RoID4ga0ltYWdlQnl0ZXNDdXRvZmYpIHsKLSAgICAgICAgbGVuZ3RoID0ga0ltYWdlQnl0
ZXNDdXRvZmY7Ci0gICAgICAgIGFsbERhdGFSZWNlaXZlZCA9IGZhbHNlOwotICAgIH0KLSNlbmRp
ZgotICAgIAotI2lmIFBMQVRGT1JNKENHKQotICAgIC8vIEF2b2lkIHRoZSBleHRyYSBjb3B5IG9m
IGJ5dGVzIGJ5IGp1c3QgaGFuZGluZyB0aGUgYnl0ZSBhcnJheSBkaXJlY3RseSB0byBhIENGRGF0
YVJlZi4KLSAgICBDRkRhdGFSZWYgZGF0YSA9IENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weSgw
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9kYXRhLmRhdGEoKSksIGxlbmd0aCwg
a0NGQWxsb2NhdG9yTnVsbCk7Ci0gICAgYm9vbCByZXN1bHQgPSBzZXROYXRpdmVEYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgQ0ZSZWxlYXNlKGRhdGEpOwotI2Vsc2UKLSAgICBib29s
IHJlc3VsdCA9IHNldE5hdGl2ZURhdGEoJm1fZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBJbWFnZTo6c2V0TmF0aXZlRGF0YShO
YXRpdmVCeXRlUHRyIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotI2lmIFBMQVRGT1JN
KENHKQotICAgIC8vIEZJWE1FOiBXaWxsIGdvIGF3YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNs
YXNzLgotICAgIGlmIChtX2lzUERGKSB7Ci0gICAgICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYg
IW1fUERGRG9jKQotICAgICAgICAgICAgbV9QREZEb2MgPSBuZXcgUERGRG9jdW1lbnRJbWFnZShk
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fUERGRG9jOwotICAgIH0KLSNlbmRpZgotCiAgICAgaW52
YWxpZGF0ZURhdGEoKTsKICAgICAKICAgICAvLyBGZWVkIGFsbCB0aGUgZGF0YSB3ZSd2ZSBzZWVu
IHNvIGZhciB0byB0aGUgaW1hZ2UgZGVjb2Rlci4KQEAgLTE4NywxMiArMTA4LDEyIEBAIGJvb2wg
SW1hZ2U6OnNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciAKICAgICByZXR1cm4gaXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKLXNpemVfdCBJbWFnZTo6ZnJhbWVDb3VudCgpCitzaXplX3QgQml0bWFw
SW1hZ2U6OmZyYW1lQ291bnQoKQogewogICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUNvdW50KCk7
CiB9CiAKLWJvb2wgSW1hZ2U6OmlzU2l6ZUF2YWlsYWJsZSgpCitib29sIEJpdG1hcEltYWdlOjpp
c1NpemVBdmFpbGFibGUoKQogewogICAgIGlmIChtX3NpemVBdmFpbGFibGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMjAzLDcgKzEyNCw3IEBAIGJvb2wgSW1hZ2U6OmlzU2l6ZUF2YWlsYWJs
ZSgpCiAKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIxNCw3ICsxMzUsNyBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZTo6ZnJhbWVBdEluZGV4KHNp
emVfCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOwogfQogCi1mbG9hdCBJbWFn
ZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQgQml0bWFwSW1hZ2U6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0g
ZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIyNSw3ICsxNDYsNyBAQCBmbG9h
dCBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90CiAgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2R1cmF0aW9uOwogfQogCi1ib29sIEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yMzYsMjEgKzE1NywyMSBAQCBib29sIEltYWdlOjpmcmFtZUhhc0FscGhh
QXRJbmRleChzaXplX3QgCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhOwog
fQogCi1ib29sIEltYWdlOjpzaG91bGRBbmltYXRlKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OnNob3Vs
ZEFuaW1hdGUoKQogewotICAgIHJldHVybiAobV9hbmltYXRpbmdJbWFnZVR5cGUgJiYgIW1fYW5p
bWF0aW9uRmluaXNoZWQgJiYgbV9hbmltYXRpb25PYnNlcnZlcik7CisgICAgcmV0dXJuIChtX2Fu
aW1hdGluZ0ltYWdlVHlwZSAmJiAhbV9hbmltYXRpb25GaW5pc2hlZCAmJiBhbmltYXRpb25PYnNl
cnZlcigpKTsKIH0KIAotdm9pZCBJbWFnZTo6c3RhcnRBbmltYXRpb24oKQordm9pZCBCaXRtYXBJ
bWFnZTo6c3RhcnRBbmltYXRpb24oKQogewogICAgIGlmIChtX2ZyYW1lVGltZXIgfHwgIXNob3Vs
ZEFuaW1hdGUoKSB8fCBmcmFtZUNvdW50KCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9mcmFtZVRpbWVyID0gbmV3IFRpbWVyPEltYWdlPih0aGlzLCAmSW1hZ2U6OmFkdmFuY2VBbmlt
YXRpb24pOworICAgIG1fZnJhbWVUaW1lciA9IG5ldyBUaW1lcjxCaXRtYXBJbWFnZT4odGhpcywg
JkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0
T25lU2hvdChmcmFtZUR1cmF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOwogfQogCi12b2lk
IEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3ZvaWQgQml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24o
KQogewogICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJlbmNl
cyBvZiB0aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQogICAgIC8vIHRoZSB0aW1lciB1bmxl
c3MgYWxsIHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2luZy4KQEAgLTI1OCw3ICsxNzksNyBA
QCB2b2lkIEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKICAgICBtX2ZyYW1lVGltZXIgPSAwOwogfQog
Ci12b2lkIEltYWdlOjpyZXNldEFuaW1hdGlvbigpCit2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFu
aW1hdGlvbigpCiB7CiAgICAgc3RvcEFuaW1hdGlvbigpOwogICAgIG1fY3VycmVudEZyYW1lID0g
MDsKQEAgLTI2Niw4ICsxODcsNyBAQCB2b2lkIEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAg
bV9hbmltYXRpb25GaW5pc2hlZCA9IGZhbHNlOwogfQogCi0KLXZvaWQgSW1hZ2U6OmFkdmFuY2VB
bmltYXRpb24oVGltZXI8SW1hZ2U+KiB0aW1lcikKK3ZvaWQgQml0bWFwSW1hZ2U6OmFkdmFuY2VB
bmltYXRpb24oVGltZXI8Qml0bWFwSW1hZ2U+KiB0aW1lcikKIHsKICAgICAvLyBTdG9wIHRoZSBh
bmltYXRpb24uCiAgICAgc3RvcEFuaW1hdGlvbigpOwpAQCAtMjkyLDIzICsyMTIsOCBAQCB2b2lk
IEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKFRpbWVyPEltYWdlCiAgICAgYW5pbWF0aW9uT2JzZXJ2
ZXIoKS0+YW5pbWF0aW9uQWR2YW5jZWQodGhpcyk7CiAgICAgICAgIAogICAgIC8vIEtpY2sgb2Zm
IGEgdGltZXIgdG8gbW92ZSB0byB0aGUgbmV4dCBmcmFtZS4KLSAgICBtX2ZyYW1lVGltZXIgPSBu
ZXcgVGltZXI8SW1hZ2U+KHRoaXMsICZJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9m
cmFtZVRpbWVyID0gbmV3IFRpbWVyPEJpdG1hcEltYWdlPih0aGlzLCAmQml0bWFwSW1hZ2U6OmFk
dmFuY2VBbmltYXRpb24pOwogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGZyYW1lRHVy
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CiB9CiAKLUludFJlY3QgSW1hZ2U6OnJlY3Qo
KSBjb25zdAotewotICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSk7Ci19Ci0K
LWludCBJbWFnZTo6d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBzaXplKCkud2lkdGgoKTsK
LX0KLQotaW50IEltYWdlOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBzaXplKCkuaGVp
Z2h0KCk7Ci19Ci0KIH0KSW5kZXg6IHBsYXRmb3JtL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTY1NDEpCisrKyBwbGF0Zm9ybS9C
aXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyNyArMjQsMTQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgSU1BR0VfSF8KLSNkZWZpbmUgSU1BR0VfSF8KKyNpZm5k
ZWYgQml0bWFwSW1hZ2VfSAorI2RlZmluZSBCaXRtYXBJbWFnZV9ICisKKyNpbmNsdWRlICJJbWFn
ZS5oIgogCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0j
aW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
RmxvYXRTaXplLmgiCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaWZkZWYgX19PQkpDX18KLUBjbGFz
cyBOU0ltYWdlOwotI2Vsc2UKLWNsYXNzIE5TSW1hZ2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oV0lOKQotdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fICpIQklUTUFQOwotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgRnJhbWVEYXRhOwogfQpAQCAtNTgs
MjUgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXVEYgeyAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBGbG9hdFBvaW50OwotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFBERkRvY3VtZW50SW1hZ2U7Ci1jbGFzcyBTdHJpbmc7
Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUaW1lcjsKIAotLy8gVGhpcyBjbGFzcyBn
ZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KLWNs
YXNzIEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXI7Ci0KIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRnJhbWVEYXRhIENsYXNzCiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogc3RydWN0IEZyYW1l
RGF0YSB7CiAgICAgRnJhbWVEYXRhKCkKLSAgICAgIDptX2ZyYW1lKDApLCBtX2R1cmF0aW9uKDAp
LCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICA6IG1fZnJhbWUoMCkKKyAgICAgICAgLCBtX2R1
cmF0aW9uKDApCisgICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKICAgICB7fQogCiAgICAgfkZy
YW1lRGF0YSgpCkBAIC05MiwxMTYgKzcxLDYxIEBAIHN0cnVjdCBGcmFtZURhdGEgewogfTsKIAog
Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8g
SW1hZ2UgQ2xhc3MKKy8vIEJpdG1hcEltYWdlIENsYXNzCiAvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWNsYXNzIEltYWdlIDogTm9uY29weWFi
bGUgeworY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2UoKTsKLSAgICBJbWFnZShJbWFn
ZUFuaW1hdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgYm9vbCBpc1BERiA9IGZhbHNlKTsKLSAgICB+
SW1hZ2UoKTsKLSAgICAKLSAgICBzdGF0aWMgSW1hZ2UqIGxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIgKm5hbWUpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLQotICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0OwotICAgIEludFJlY3QgcmVjdCgpIGNvbnN0OwotICAgIGludCB3aWR0aCgpIGNv
bnN0OwotICAgIGludCBoZWlnaHQoKSBjb25zdDsKLQotICAgIGJvb2wgc2V0RGF0YShib29sIGFs
bERhdGFSZWNlaXZlZCk7Ci0gICAgYm9vbCBzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAKLSAgICBWZWN0b3I8Y2hhcj4mIGRhdGFCdWZmZXIo
KSB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgIC8vIEl0IG1heSBsb29rIHVudXN1YWwgdGhhdCB0
aGVyZSBpcyBubyBzdGFydCBhbmltYXRpb24gY2FsbCBhcyBwdWJsaWMgQVBJLiAgVGhpcyBpcyBi
ZWNhdXNlCi0gICAgLy8gd2Ugc3RhcnQgYW5kIHN0b3AgYW5pbWF0aW5nIGxhemlseS4gIEFuaW1h
dGlvbiBiZWdpbnMgd2hlbmV2ZXIgc29tZW9uZSBkcmF3cyB0aGUgaW1hZ2UuICBJdCB3aWxsCi0g
ICAgLy8gYXV0b21hdGljYWxseSBwYXVzZSBvbmNlIGFsbCBvYnNlcnZlcnMgbm8gbG9uZ2VyIHdh
bnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhbnl3aGVyZS4KLSAgICB2b2lkIHN0b3BBbmltYXRpb24o
KTsKLSAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7Ci0gICAgCi0gICAgLy8gRnJhbWUgYWNjZXNz
b3JzLgotICAgIHNpemVfdCBjdXJyZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRG
cmFtZTsgfQotICAgIHNpemVfdCBmcmFtZUNvdW50KCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVBdEluZGV4KHNpemVfdCBpbmRleCk7Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KTsKLSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCk7Ci0KLSAgICAvLyBUeXBpY2FsbHkgdGhlIENhY2hlZEltYWdlIHRoYXQgb3ducyB1cy4KLSAg
ICBJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBhbmltYXRpb25PYnNlcnZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYW5pbWF0aW9uT2JzZXJ2ZXI7IH0KLQotICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNo
VGlsZSwgUm91bmRUaWxlLCBSZXBlYXRUaWxlIH07Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCi0gICAgTlNJbWFnZSog
Z2V0TlNJbWFnZSgpOwotICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKTsKLSNl
bmRpZgotCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCk7
Ci0jZW5kaWYKKyAgICBCaXRtYXBJbWFnZShJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiA9IDApOwor
ICAgIHZpcnR1YWwgfkJpdG1hcEltYWdlKCk7CiAKLSNpZiBQTEFURk9STShXSU4pCi0gICAgYm9v
bCBnZXRIQklUTUFQKEhCSVRNQVAgYm1wKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgSW50U2l6ZSBz
aXplKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2V0TmF0aXZlRGF0YShOYXRpdmVCeXRl
UHRyLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN0b3BB
bmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKyAgICAKKyAg
ICAvLyBGcmFtZSBhY2Nlc3NvcnMuCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudEZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFt
ZUNvdW50KCk7CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90
KTsKKyAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvcik7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2l6ZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IpOwotICAgIHZvaWQgZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsCi0gICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yKTsKLQorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAg
ICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vzc2VkIGV4Y2VwdCBp
bnRlcm5hbGx5LgogICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgpOwotCi0gICAgLy8g
Q2FsbGVkIHRvIGludmFsaWRhdGUgYWxsIG91ciBjYWNoZWQgZGF0YSB3aGVuIG1vcmUgYnl0ZXMg
YXJlIGF2YWlsYWJsZS4KLSAgICB2b2lkIGludmFsaWRhdGVEYXRhKCk7Ci0KLSAgICAvLyBXaGV0
aGVyIG9yIG5vdCBzaXplIGlzIGF2YWlsYWJsZSB5ZXQuICAgIAorICAgIAorICAgIC8vIFdoZXRo
ZXIgb3Igbm90IHNpemUgaXMgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGlzU2l6ZUF2YWlsYWJs
ZSgpOwotCisgICAgCisgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgYWxsIG91ciBjYWNoZWQg
ZGF0YSB3aGVuIG1vcmUgYnl0ZXMgYXJlIGF2YWlsYWJsZS4KKyAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZURhdGEoKTsKKyAgICAKICAgICAvLyBBbmltYXRpb24uCiAgICAgYm9vbCBzaG91bGRB
bmltYXRlKCk7Ci0gICAgdm9pZCBzdGFydEFuaW1hdGlvbigpOwotICAgIHZvaWQgYWR2YW5jZUFu
aW1hdGlvbihUaW1lcjxJbWFnZT4qIHRpbWVyKTsKLSAgICAKLSAgICAvLyBDb25zdHJ1Y3RvciBm
b3IgT1Mtc3BlY2lmaWMgZGF0YS4KLSAgICB2b2lkIGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAg
IC8vIEludmFsaWRhdGlvbiBvZiBuYXRpdmUgZGF0YS4KLSAgICB2b2lkIGludmFsaWRhdGVQbGF0
Zm9ybURhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKTsKKyAgICB2b2lk
IGFkdmFuY2VBbmltYXRpb24oVGltZXI8Qml0bWFwSW1hZ2U+Kik7CiAKICAgICAvLyBDaGVja3Mg
dG8gc2VlIGlmIHRoZSBpbWFnZSBpcyBhIDF4MSBzb2xpZCBjb2xvci4gIFdlIG9wdGltaXplIHRo
ZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBpbnN0ZWFkLgogICAgIHZvaWQgY2hl
Y2tGb3JTb2xpZENvbG9yKCk7CisgICAgdmlydHVhbCBib29sIGlzU29saWRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNTb2xpZENvbG9yOyB9CiAKICAgICAvLyBNZW1iZXJzCi0gICAgVmVjdG9y
PGNoYXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgcmF3IGRhdGEgZm9yIHRoZSBpbWFnZS4KICAg
ICBJbWFnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBU
aGUgc2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNp
emUgb2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7
IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCiAgICAgVmVj
dG9yPEZyYW1lRGF0YT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCiAgICAgCi0gICAgLy8gT3VyIGFuaW1hdGlvbiBvYnNlcnZlci4KLSAgICBJbWFn
ZUFuaW1hdGlvbk9ic2VydmVyKiBtX2FuaW1hdGlvbk9ic2VydmVyOwotICAgIFRpbWVyPEltYWdl
PiogbV9mcmFtZVRpbWVyOworICAgIFRpbWVyPEJpdG1hcEltYWdlPiogbV9mcmFtZVRpbWVyOwog
ICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxv
b3BzIHdlIHNob3VsZCBkby4KICAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93
IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNoZWQuCiAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgbXV0YWJsZSBOU0ltYWdlKiBtX25zSW1hZ2U7IC8vIEEgY2FjaGVkIE5TSW1hZ2Ugb2YgZnJh
bWUgMC4gT25seSBidWlsdCBsYXppbHkgaWYgc29tZW9uZSBhY3R1YWxseSBxdWVyaWVzIGZvciBv
bmUuCi0gICAgbXV0YWJsZSBDRkRhdGFSZWYgbV90aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAg
Zm9yIGZyYW1lIDAuICBPbmx5IGJ1aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMgZm9yIG9u
ZS4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgUERGRG9jdW1lbnRJbWFnZSogbV9Q
REZEb2M7Ci0gICAgYm9vbCBtX2lzUERGOwotI2VuZGlmCiAKICAgICBDb2xvciBtX3NvbGlkQ29s
b3I7ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8g
dXNlIHRvIGZpbGwuCiAgICAgYm9vbCBtX2lzU29saWRDb2xvcjsgIC8vIFdoZXRoZXIgb3Igbm90
IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFnZS4KSW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAx
NjU0MSkKKysrIHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTksNyArMTU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2NhbGUo
Y29uc3QgRmxvYXRTaXplJik7CiAgICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRp
YW5zKTsKLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgICAg
IHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgICAgICBJbnRQb2ludCBvcmln
aW4oKTsKIAogICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
SW5kZXg6IHBsYXRmb3JtL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9JbWFnZS5j
cHAJKHJldmlzaW9uIDE2NTQxKQorKysgcGxhdGZvcm0vSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw4MyArMzUsMjEgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JNKENHKQotLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVu
IHdlIG1ha2UgUERGIGEgc3ViY2xhc3MuCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBJbWFnZSBDbGFzcwogLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUltYWdlOjpJbWFnZSgp
Ci06IG1fY3VycmVudEZyYW1lKDApLCBtX2ZyYW1lcygwKSwgbV9hbmltYXRpb25PYnNlcnZlcigw
KSwKLSAgbV9mcmFtZVRpbWVyKDApLCBtX3JlcGV0aXRpb25Db3VudCgwKSwgbV9yZXBldGl0aW9u
c0NvbXBsZXRlKDApLAotICBtX2lzU29saWRDb2xvcihmYWxzZSksIG1fYW5pbWF0aW5nSW1hZ2VU
eXBlKHRydWUpLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKSwKLSAgbV9oYXZlU2l6ZShmYWxz
ZSksIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKK0ltYWdlOjpJbWFnZShJbWFnZUFuaW1hdGlvbk9i
c2VydmVyKiBvYnNlcnZlcikKKyAgICA6IG1fYW5pbWF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXIpCiB7
Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgbV9pc1BERiA9IGZhbHNlOyAvLyBGSVhNRTogV2lsbCBn
byBhd2F5IHdoZW4gd2UgbWFrZSBQREYgYSBzdWJjbGFzcy4KLSAgICBtX1BERkRvYyA9IDA7Ci0j
ZW5kaWYKICAgICBpbml0UGxhdGZvcm1EYXRhKCk7CiB9CiAKLUltYWdlOjpJbWFnZShJbWFnZUFu
aW1hdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgYm9vbCBpc1BERikKLSA6IG1fY3VycmVudEZyYW1l
KDApLCBtX2ZyYW1lcygwKSwgbV9hbmltYXRpb25PYnNlcnZlcigwKSwKLSAgbV9mcmFtZVRpbWVy
KDApLCBtX3JlcGV0aXRpb25Db3VudCgwKSwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApLAotICBt
X2lzU29saWRDb2xvcihmYWxzZSksIG1fYW5pbWF0aW5nSW1hZ2VUeXBlKHRydWUpLCBtX2FuaW1h
dGlvbkZpbmlzaGVkKGZhbHNlKSwKLSAgbV9oYXZlU2l6ZShmYWxzZSksIG1fc2l6ZUF2YWlsYWJs
ZShmYWxzZSkKLXsKLSAgICBpbml0UGxhdGZvcm1EYXRhKCk7Ci0jaWYgUExBVEZPUk0oQ0cpCi0g
ICAgbV9pc1BERiA9IGlzUERGOyAvLyBGSVhNRTogV2lsbCBnbyBhd2F5IHdoZW4gd2UgbWFrZSBQ
REYgYSBzdWJjbGFzcy4KLSAgICBtX1BERkRvYyA9IDA7Ci0jZW5kaWYKLSAgICBtX2FuaW1hdGlv
bk9ic2VydmVyID0gb2JzZXJ2ZXI7Ci19Ci0KIEltYWdlOjp+SW1hZ2UoKQogewogICAgIGludmFs
aWRhdGVEYXRhKCk7Ci0gICAgc3RvcEFuaW1hdGlvbigpOwotI2lmIFBMQVRGT1JNKENHKQotICAg
IGRlbGV0ZSBtX1BERkRvYzsgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgYSBQ
REYgaW1hZ2Ugc3ViY2xhc3MuCi0jZW5kaWYKLX0KLQotdm9pZCBJbWFnZTo6aW52YWxpZGF0ZURh
dGEoKQotewotICAgIC8vIERlc3Ryb3kgdGhlIGNhY2hlZCBpbWFnZXMgYW5kIHJlbGVhc2UgdGhl
bS4KLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZnJhbWVzLmxhc3QoKS5j
bGVhcigpOwotICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBpbnZhbGlk
YXRlUGxhdGZvcm1EYXRhKCk7Ci0gICAgfQotfQotCi12b2lkIEltYWdlOjpjYWNoZUZyYW1lKHNp
emVfdCBpbmRleCkKLXsKLSAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwotICAg
IGlmICghbV9mcmFtZXMuc2l6ZSgpICYmIHNob3VsZEFuaW1hdGUoKSkgeyAgICAgICAgICAgIAot
ICAgICAgICAvLyBTbmFnIHRoZSByZXBldGl0aW9uIGNvdW50LgotICAgICAgICBtX3JlcGV0aXRp
b25Db3VudCA9IG1fc291cmNlLnJlcGV0aXRpb25Db3VudCgpOwotICAgICAgICBpZiAobV9yZXBl
dGl0aW9uQ291bnQgPT0gY0FuaW1hdGlvbk5vbmUpCi0gICAgICAgICAgICBtX2FuaW1hdGluZ0lt
YWdlVHlwZSA9IGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwg
bnVtRnJhbWVzKQotICAgICAgICBtX2ZyYW1lcy5yZXNpemUobnVtRnJhbWVzKTsKLQotICAgIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4
KTsKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCi0gICAgICAgIGNoZWNrRm9yU29s
aWRDb2xvcigpOwotCi0gICAgaWYgKHNob3VsZEFuaW1hdGUoKSkKLSAgICAgICAgbV9mcmFtZXNb
aW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7
Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhh
QXRJbmRleChpbmRleCk7CiB9CiAKIGJvb2wgSW1hZ2U6OmlzTnVsbCgpIGNvbnN0CkBAIC0xMTks
MjUgKzU3LDYgQEAgYm9vbCBJbWFnZTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZSgp
LmlzRW1wdHkoKTsKIH0KIAotSW50U2l6ZSBJbWFnZTo6c2l6ZSgpIGNvbnN0Ci17Ci0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgLy8gRklYTUU6IFdpbGwgZ28gYXdheSB3aGVuIHdlIG1ha2UgUERGIGEg
c3ViY2xhc3MuCi0gICAgaWYgKG1faXNQREYpIHsKLSAgICAgICAgaWYgKG1fUERGRG9jKSB7Ci0g
ICAgICAgICAgICBGbG9hdFNpemUgc2l6ZSA9IG1fUERGRG9jLT5zaXplKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gSW50U2l6ZSgoaW50KXNpemUud2lkdGgoKSwgKGludClzaXplLmhlaWdodCgpKTsK
LSAgICAgICAgfQotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgCi0gICAgaWYgKG1fc2l6ZUF2YWls
YWJsZSAmJiAhbV9oYXZlU2l6ZSkgewotICAgICAgICBtX3NpemUgPSBtX3NvdXJjZS5zaXplKCk7
Ci0gICAgICAgIG1faGF2ZVNpemUgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gbV9zaXplOwot
fQotCiBib29sIEltYWdlOjpzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlu
dCBsZW5ndGggPSBtX2RhdGEuc2l6ZSgpOwpAQCAtMTY2LDEzNiArODUsNiBAQCBib29sIEltYWdl
OjpzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ym9vbCBJbWFnZTo6c2V0TmF0aXZlRGF0YShOYXRpdmVCeXRlUHRyIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQotewotI2lmIFBMQVRGT1JNKENHKQotICAgIC8vIEZJWE1FOiBXaWxsIGdvIGF3
YXkgd2hlbiB3ZSBtYWtlIFBERiBhIHN1YmNsYXNzLgotICAgIGlmIChtX2lzUERGKSB7Ci0gICAg
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fUERGRG9jKQotICAgICAgICAgICAgbV9QREZE
b2MgPSBuZXcgUERGRG9jdW1lbnRJbWFnZShkYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fUERGRG9j
OwotICAgIH0KLSNlbmRpZgotCi0gICAgaW52YWxpZGF0ZURhdGEoKTsKLSAgICAKLSAgICAvLyBG
ZWVkIGFsbCB0aGUgZGF0YSB3ZSd2ZSBzZWVuIHNvIGZhciB0byB0aGUgaW1hZ2UgZGVjb2Rlci4K
LSAgICBtX3NvdXJjZS5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgCi0gICAg
Ly8gSW1hZ2UgcHJvcGVydGllcyB3aWxsIG5vdCBiZSBhdmFpbGFibGUgdW50aWwgdGhlIGZpcnN0
IGZyYW1lIG9mIHRoZSBmaWxlCi0gICAgLy8gcmVhY2hlcyBrQ0dJbWFnZVN0YXR1c0luY29tcGxl
dGUuCi0gICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpOwotfQotCi1zaXplX3QgSW1hZ2U6OmZy
YW1lQ291bnQoKQotewotICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUNvdW50KCk7Ci19Ci0KLWJv
b2wgSW1hZ2U6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgaWYgKG1fc2l6ZUF2YWlsYWJsZSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtX3NpemVBdmFpbGFibGUgPSBtX3NvdXJjZS5p
c1NpemVBdmFpbGFibGUoKTsKLQotICAgIHJldHVybiBtX3NpemVBdmFpbGFibGU7Ci0KLX0KLQot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAg
aWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAg
ICAgICAgY2FjaGVGcmFtZShpbmRleCk7Ci0KLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWU7Ci19Ci0KLWZsb2F0IEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCk7Ci0KLSAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19Ci0KLWJvb2wgSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdElu
ZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKLQotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKLX0KLQotYm9vbCBJbWFnZTo6c2hv
dWxkQW5pbWF0ZSgpCi17Ci0gICAgcmV0dXJuIChtX2FuaW1hdGluZ0ltYWdlVHlwZSAmJiAhbV9h
bmltYXRpb25GaW5pc2hlZCAmJiBtX2FuaW1hdGlvbk9ic2VydmVyKTsKLX0KLQotdm9pZCBJbWFn
ZTo6c3RhcnRBbmltYXRpb24oKQotewotICAgIGlmIChtX2ZyYW1lVGltZXIgfHwgIXNob3VsZEFu
aW1hdGUoKSB8fCBmcmFtZUNvdW50KCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9m
cmFtZVRpbWVyID0gbmV3IFRpbWVyPEltYWdlPih0aGlzLCAmSW1hZ2U6OmFkdmFuY2VBbmltYXRp
b24pOwotICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGZyYW1lRHVyYXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKSk7Ci19Ci0KLXZvaWQgSW1hZ2U6OnN0b3BBbmltYXRpb24oKQotewot
ICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0
aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQotICAgIC8vIHRoZSB0aW1lciB1bmxlc3MgYWxs
IHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2luZy4KLSAgICBkZWxldGUgbV9mcmFtZVRpbWVy
OwotICAgIG1fZnJhbWVUaW1lciA9IDA7Ci19Ci0KLXZvaWQgSW1hZ2U6OnJlc2V0QW5pbWF0aW9u
KCkKLXsKLSAgICBzdG9wQW5pbWF0aW9uKCk7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSAwOwotICAg
IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSA9IDA7Ci0gICAgbV9hbmltYXRpb25GaW5pc2hlZCA9IGZh
bHNlOwotfQotCi0KLXZvaWQgSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24oVGltZXI8SW1hZ2U+KiB0
aW1lcikKLXsKLSAgICAvLyBTdG9wIHRoZSBhbmltYXRpb24uCi0gICAgc3RvcEFuaW1hdGlvbigp
OwotICAgIAotICAgIC8vIFNlZSBpZiBhbnlvbmUgaXMgc3RpbGwgcGF5aW5nIGF0dGVudGlvbiB0
byB0aGlzIGFuaW1hdGlvbi4gIElmIG5vdCwgd2UgZG9uJ3QKLSAgICAvLyBhZHZhbmNlIGFuZCB3
aWxsIHNpbXBseSBwYXVzZSB0aGUgYW5pbWF0aW9uLgotICAgIGlmIChhbmltYXRpb25PYnNlcnZl
cigpLT5zaG91bGRTdG9wQW5pbWF0aW9uKHRoaXMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2N1cnJlbnRGcmFtZSsrOwotICAgIGlmIChtX2N1cnJlbnRGcmFtZSA+PSBmcmFtZUNvdW50KCkp
IHsKLSAgICAgICAgbV9yZXBldGl0aW9uc0NvbXBsZXRlICs9IDE7Ci0gICAgICAgIGlmIChtX3Jl
cGV0aXRpb25Db3VudCAmJiBtX3JlcGV0aXRpb25zQ29tcGxldGUgPj0gbV9yZXBldGl0aW9uQ291
bnQpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0aW9uRmluaXNoZWQgPSBmYWxzZTsKLSAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lLS07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSAwOwotICAgIH0KLQotICAgIC8vIE5vdGlmeSBvdXIgb2Jz
ZXJ2ZXIgdGhhdCB0aGUgYW5pbWF0aW9uIGhhcyBhZHZhbmNlZC4KLSAgICBhbmltYXRpb25PYnNl
cnZlcigpLT5hbmltYXRpb25BZHZhbmNlZCh0aGlzKTsKLSAgICAgICAgCi0gICAgLy8gS2ljayBv
ZmYgYSB0aW1lciB0byBtb3ZlIHRvIHRoZSBuZXh0IGZyYW1lLgotICAgIG1fZnJhbWVUaW1lciA9
IG5ldyBUaW1lcjxJbWFnZT4odGhpcywgJkltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKLSAgICBt
X2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChmcmFtZUR1cmF0aW9uQXRJbmRleChtX2N1cnJlbnRG
cmFtZSkpOwotfQotCiBJbnRSZWN0IEltYWdlOjpyZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
SW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpOwpJbmRleDogcGxhdGZvcm0vSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9JbWFnZS5oCShyZXZpc2lvbiAxNjU0MSkKKysrIHBsYXRmb3Jt
L0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCwxMiBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBJTUFHRV9IXwotI2RlZmluZSBJTUFHRV9IXworI2lmbmRlZiBJ
bWFnZV9ICisjZGVmaW5lIEltYWdlX0gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
IC8vIGZvciBOYXRpdmVCeXRlUHRyCiAKICNpZiBQTEFURk9STShNQUMpCiAjaWZkZWYgX19PQkpD
X18KQEAgLTQ2LDUxICs0NCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURhdGE7Ci19
Ci0KLS8vIFRoaXMgY29tcGxpY2F0ZWQtbG9va2luZyBkZWNsYXJhdGlvbiB0ZWxscyB0aGUgZnJh
bWVkYXRhIFZlY3RvciB0aGF0IGl0IGNhbiBjb3B5IHdpdGhvdXQKLS8vIGhhdmluZyB0byBpbnZv
a2Ugb3VyIGNvcHkgY29uc3RydWN0b3IuIFRoaXMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIHdv
cnJ5IGFib3V0IHJlZiBjb3VudGluZwotLy8gdGhlIG5hdGl2ZSBmcmFtZXMuCi1uYW1lc3BhY2Ug
V1RGIHsgCi0gICAgdGVtcGxhdGU8PiBjbGFzcyBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVE
YXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7fTsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OworY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UmVjdDsKLWNsYXNz
IFBERkRvY3VtZW50SW1hZ2U7CiBjbGFzcyBTdHJpbmc7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBUaW1lcjsKLQogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1h
Z2UgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KIGNsYXNzIEltYWdlQW5pbWF0aW9uT2JzZXJ2
ZXI7CiAKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLy8gRnJhbWVEYXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgRnJhbWVEYXRhKCkK
LSAgICAgIDptX2ZyYW1lKDApLCBtX2R1cmF0aW9uKDApLCBtX2hhc0FscGhhKHRydWUpIAotICAg
IHt9Ci0KLSAgICB+RnJhbWVEYXRhKCkKLSAgICB7IAotICAgICAgICBjbGVhcigpOwotICAgIH0K
LQotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7Ci0gICAg
ZmxvYXQgbV9kdXJhdGlvbjsKLSAgICBib29sIG1faGFzQWxwaGE7Ci19OwotCiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBJbWFnZSBDbGFz
cwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpA
QCAtOTgsMzcgKzYyLDI5IEBAIHN0cnVjdCBGcmFtZURhdGEgewogY2xhc3MgSW1hZ2UgOiBOb25j
b3B5YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAg
ICBJbWFnZSgpOwotICAgIEltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBi
b29sIGlzUERGID0gZmFsc2UpOwotICAgIH5JbWFnZSgpOworICAgIEltYWdlKEltYWdlQW5pbWF0
aW9uT2JzZXJ2ZXIqID0gMCk7CisgICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKICAgICBzdGF0
aWMgSW1hZ2UqIGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpOwotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3Q7CiAKLSAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6
ZSgpIGNvbnN0ID0gMDsKICAgICBJbnRSZWN0IHJlY3QoKSBjb25zdDsKICAgICBpbnQgd2lkdGgo
KSBjb25zdDsKICAgICBpbnQgaGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBib29sIHNldERhdGEoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIGJvb2wgc2V0TmF0aXZlRGF0YShOYXRpdmVCeXRlUHRy
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBib29sIHNldERhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOworICAgIHZpcnR1YWwgYm9vbCBzZXROYXRpdmVEYXRhKE5hdGl2ZUJ5
dGVQdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAg
IFZlY3RvcjxjaGFyPiYgZGF0YUJ1ZmZlcigpIHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgLy8g
SXQgbWF5IGxvb2sgdW51c3VhbCB0aGF0IHRoZXJlIGlzIG5vIHN0YXJ0IGFuaW1hdGlvbiBjYWxs
IGFzIHB1YmxpYyBBUEkuICBUaGlzIGlzIGJlY2F1c2UKICAgICAvLyB3ZSBzdGFydCBhbmQgc3Rv
cCBhbmltYXRpbmcgbGF6aWx5LiAgQW5pbWF0aW9uIGJlZ2lucyB3aGVuZXZlciBzb21lb25lIGRy
YXdzIHRoZSBpbWFnZS4gIEl0IHdpbGwKICAgICAvLyBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2Ug
YWxsIG9ic2VydmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJl
LgotICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpOwotICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsK
LSAgICAKLSAgICAvLyBGcmFtZSBhY2Nlc3NvcnMuCi0gICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQo
KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KTsKLSAgICBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpOwotICAgIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1h
dGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpIHsgfQogCiAgICAg
Ly8gVHlwaWNhbGx5IHRoZSBDYWNoZWRJbWFnZSB0aGF0IG93bnMgdXMuCiAgICAgSW1hZ2VBbmlt
YXRpb25PYnNlcnZlciogYW5pbWF0aW9uT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2FuaW1h
dGlvbk9ic2VydmVyOyB9CkBAIC0xNDAsNzcgKzk2LDUyIEBAIHB1YmxpYzoKICAgICBOU0ltYWdl
KiBnZXROU0ltYWdlKCk7CiAgICAgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpOwog
I2VuZGlmCi0KKyAgICAKICNpZiBQTEFURk9STShDRykKICAgICBDR0ltYWdlUmVmIGdldENHSW1h
Z2VSZWYoKTsKICNlbmRpZgotCisgICAgCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgZ2V0
SEJJVE1BUChIQklUTUFQIGJtcCk7CiAjZW5kaWYKLQorICAgIAorICAgIC8vIEZyYW1lIGFjY2Vz
c29ycy4KKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpID0gMDsKKyAgICAKK3By
b3RlY3RlZDoKKyAgICBWZWN0b3I8Y2hhcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCByYXcgZGF0
YSBmb3IgdGhlIGltYWdlLgorICAgIAorICAgIC8vIEludmFsaWRhdGlvbiBvZiBuYXRpdmUgZGF0
YS4KKyAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKKyAgICAKKyAgICBib29sIGNh
bkZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJuIChpc1NvbGlkQ29sb3IoKSAmJiBjdXJyZW50
RnJhbWUoKSA9PSAwKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NvbGlkQ29sb3IoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIENvbG9yKCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24o
KSB7IH0KKyAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yKSA9IDA7CiAgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZv
aWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUs
CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yKTsKLQotICAgIC8vIERlY29kZXMgYW5kIGNhY2hl
cyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICB2b2lkIGNh
Y2hlRnJhbWUoc2l6ZV90IGluZGV4KTsKLQorICAgIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlk
YXRlIGFsbCBvdXIgY2FjaGVkIGRhdGEgd2hlbiBtb3JlIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0g
ICAgdm9pZCBpbnZhbGlkYXRlRGF0YSgpOwotCi0gICAgLy8gV2hldGhlciBvciBub3Qgc2l6ZSBp
cyBhdmFpbGFibGUgeWV0LiAgICAKLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwotCi0gICAg
Ly8gQW5pbWF0aW9uLgotICAgIGJvb2wgc2hvdWxkQW5pbWF0ZSgpOwotICAgIHZvaWQgc3RhcnRB
bmltYXRpb24oKTsKLSAgICB2b2lkIGFkdmFuY2VBbmltYXRpb24oVGltZXI8SW1hZ2U+KiB0aW1l
cik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVEYXRhKCkgeyBpbnZhbGlkYXRlUGxhdGZv
cm1EYXRhKCk7IH0KICAgICAKICAgICAvLyBDb25zdHJ1Y3RvciBmb3IgT1Mtc3BlY2lmaWMgZGF0
YS4KICAgICB2b2lkIGluaXRQbGF0Zm9ybURhdGEoKTsKLQotICAgIC8vIEludmFsaWRhdGlvbiBv
ZiBuYXRpdmUgZGF0YS4KLSAgICB2b2lkIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKLQotICAg
IC8vIENoZWNrcyB0byBzZWUgaWYgdGhlIGltYWdlIGlzIGEgMXgxIHNvbGlkIGNvbG9yLiAgV2Ug
b3B0aW1pemUgdGhlc2UgaW1hZ2VzIGFuZCBqdXN0IGRvIGEgZmlsbCByZWN0IGluc3RlYWQuCi0g
ICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLQotICAgIC8vIE1lbWJlcnMKLSAgICBWZWN0
b3I8Y2hhcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCByYXcgZGF0YSBmb3IgdGhlIGltYWdlLgot
ICAgIEltYWdlU291cmNlIG1fc291cmNlOwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8v
IFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUg
c2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgotICAgIAotICAgIHNpemVfdCBtX2N1cnJlbnRGcmFt
ZTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KLSAgICBW
ZWN0b3I8RnJhbWVEYXRhPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFt
ZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGlu
IHRoZSBjYWNoZS4KLSAgICAKKyAgICAgICAgCiAgICAgLy8gT3VyIGFuaW1hdGlvbiBvYnNlcnZl
ci4KICAgICBJbWFnZUFuaW1hdGlvbk9ic2VydmVyKiBtX2FuaW1hdGlvbk9ic2VydmVyOwotICAg
IFRpbWVyPEltYWdlPiogbV9mcmFtZVRpbWVyOwotICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsg
Ly8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4KLSAgICBpbnQg
bV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmlu
aXNoZWQuCi0KKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgbXV0YWJsZSBOU0ltYWdlKiBt
X25zSW1hZ2U7IC8vIEEgY2FjaGVkIE5TSW1hZ2Ugb2YgZnJhbWUgMC4gT25seSBidWlsdCBsYXpp
bHkgaWYgc29tZW9uZSBhY3R1YWxseSBxdWVyaWVzIGZvciBvbmUuCiAgICAgbXV0YWJsZSBDRkRh
dGFSZWYgbV90aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuICBPbmx5IGJ1
aWx0IGxhemlseSBpZiBzb21lb25lIHF1ZXJpZXMgZm9yIG9uZS4KICNlbmRpZgotCi0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgUERGRG9jdW1lbnRJbWFnZSogbV9QREZEb2M7Ci0gICAgYm9vbCBtX2lz
UERGOwotI2VuZGlmCi0KLSAgICBDb2xvciBtX3NvbGlkQ29sb3I7ICAvLyBJZiB3ZSdyZSBhIDF4
MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8gdXNlIHRvIGZpbGwuCi0gICAgYm9v
bCBtX2lzU29saWRDb2xvcjsgIC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4MSBzb2xpZCBp
bWFnZS4KLQotICAgIGJvb2wgbV9hbmltYXRpbmdJbWFnZVR5cGU7ICAvLyBXaGV0aGVyIG9yIG5v
dCB3ZSdyZSBhbiBpbWFnZSB0eXBlIHRoYXQgaXMgY2FwYWJsZSBvZiBhbmltYXRpbmcgKEdJRiku
Ci0gICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkOyAgLy8gV2hldGhlciBvciBub3Qgd2UndmUg
Y29tcGxldGVkIHRoZSBlbnRpcmUgYW5pbWF0aW9uLgotCi0gICAgbXV0YWJsZSBib29sIG1faGF2
ZVNpemU7IC8vIFdoZXRoZXIgb3Igbm90IG91ciB8bV9zaXplfCBtZW1iZXIgdmFyaWFibGUgaGFz
IHRoZSBmaW5hbCBvdmVyYWxsIGltYWdlIHNpemUgeWV0LgotICAgIGJvb2wgbV9zaXplQXZhaWxh
YmxlOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJz
dCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgogfTsKIAogfQpJbmRleDogcGxhdGZvcm0v
U1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1NWR0ltYWdlLmNwcAkocmV2aXNp
b24gMCkKKysrIHBsYXRmb3JtL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgKHdlYmtpdEBlc2Vp
ZGVsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmZGVmIFNWR19TVVBQT1JU
CisKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGcmFtZU1hYy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5j
bHVkZSAiU1ZHTGVuZ3RoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHSW1hZ2U6OlNW
R0ltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2Jz
ZXJ2ZXIpCisgICAgLCBtX2xhc3REYXRhT2Zmc2V0KDApCisgICAgLCBtX2ZyYW1lKDApCisgICAg
LCBtX2ZyYW1lVmlldygwKQoreworfQorCitTVkdJbWFnZTo6flNWR0ltYWdlKCkKK3sKK30KKwor
SW50U2l6ZSBTVkdJbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9v
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkp
LT5yb290RWxlbWVudCgpOworICAgIGlmICghcm9vdEVsZW1lbnQpCisgICAgICAgIHJldHVybiBJ
bnRTaXplKCk7CisgICAgCisgICAgU1ZHTGVuZ3RoKiB3aWR0aCA9IHJvb3RFbGVtZW50LT53aWR0
aCgpOworICAgIFNWR0xlbmd0aCogaGVpZ2h0ID0gcm9vdEVsZW1lbnQtPmhlaWdodCgpOworICAg
IAorICAgIEludFNpemUgc3ZnU2l6ZTsKKyAgICAvLyBGSVhNRTogV2UgaGF2ZSBubyB2aWV3IHRv
IHNpemUgYWdhaW5zdCwgdGh1cyBwZXJjZW50YWdlcyBhcmUgYWx3YXlzIDAsIGhlbmNlIHdlIGhh
Y2sgZm9yIG5vdzoKKyAgICBpZiAod2lkdGgtPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdf
TEVOR1RIVFlQRV9QRVJDRU5UQUdFKQorICAgICAgICBzdmdTaXplLnNldFdpZHRoKDEwMDApOwor
ICAgIGVsc2UKKyAgICAgICAgc3ZnU2l6ZS5zZXRXaWR0aCh3aWR0aC0+dmFsdWUoKSk7CisgICAg
aWYgKGhlaWdodC0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNF
TlRBR0UpCisgICAgICAgIHN2Z1NpemUuc2V0SGVpZ2h0KDEwMDApOworICAgIGVsc2UKKyAgICAg
ICAgc3ZnU2l6ZS5zZXRIZWlnaHQoaGVpZ2h0LT52YWx1ZSgpKTsKKyAgICAKKyAgICByZXR1cm4g
c3ZnU2l6ZTsKK30KKwordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICBpZiAobV9mcmFtZSkgeworICAg
ICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgIGNvbnRleHQtPmFkZENsaXAoZW5jbG9zaW5n
SW50UmVjdChkc3RSZWN0KSk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShkc3RSZWN0Lmxv
Y2F0aW9uKCkgLSBGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKS9zcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkv
c3JjUmVjdC5oZWlnaHQoKSkpOworICAgICAgICBtX2ZyYW1lLT5wYWludChjb250ZXh0LCBlbmNs
b3NpbmdJbnRSZWN0KHNyY1JlY3QpKTsKKyAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAg
IH0KK30KKworYm9vbCBTVkdJbWFnZTo6c2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKK3sK
KyAgICBpbnQgbGVuZ3RoID0gbV9kYXRhLnNpemUoKTsKKyAgICBpZiAoIWxlbmd0aCkgLy8gaWYg
dGhpcyB3YXMgYW4gZW1wdHkgaW1hZ2UKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAg
aWYgKGFsbERhdGFSZWNlaXZlZCkgeworICAgICAgICBtX3BhZ2UgPSBuZXcgUGFnZSgwKTsKKyAg
ICAgICAgbV9mcmFtZSA9IG5ldyBGcmFtZU1hYyhtX3BhZ2UsIDApOworICAgICAgICBtX2ZyYW1l
VmlldyA9IG5ldyBGcmFtZVZpZXcobV9mcmFtZS5nZXQoKSk7CisgICAgICAgIG1fZnJhbWUtPnNl
dFZpZXcobV9mcmFtZVZpZXcuZ2V0KCkpOworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgZmFrZVJl
cXVlc3Q7CisgICAgICAgIGZha2VSZXF1ZXN0Lm1fcmVzcG9uc2VNSU1FVHlwZSA9ICJpbWFnZS9z
dmcreG1sIjsKKyAgICAgICAgbV9mcmFtZS0+c2V0UmVzb3VyY2VSZXF1ZXN0KGZha2VSZXF1ZXN0
KTsKKyAgICAgICAgU2V0dGluZ3MqIGxlYWtlZFNldHRpbmdzID0gbmV3IFNldHRpbmdzKCk7Cisg
ICAgICAgIG1fZnJhbWUtPnNldFNldHRpbmdzKGxlYWtlZFNldHRpbmdzKTsKKyAgICAgICAgbV9m
cmFtZS0+YmVnaW4oInBsYWNlaG9sZGVyLnN2ZyIpOworICAgICAgICBtX2ZyYW1lLT53cml0ZSht
X2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9mcmFtZS0+ZW5kKCk7Cisg
ICAgfQorICAgIHJldHVybiBtX2ZyYW1lVmlldzsKK30KKworfQorCisjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKSW5kZXg6IHBsYXRmb3JtL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
U1ZHSW1hZ2UuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL1NWR0ltYWdlLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlk
ZWwgKHdlYmtpdEBlc2VpZGVsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdJbWFnZV9ICisjZGVm
aW5lIFNWR0ltYWdlX0gKKworI2lmZGVmIFNWR19TVVBQT1JUCisKKyNpbmNsdWRlICJJbWFnZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgU1ZHRG9jdW1lbnQ7Cisg
ICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgRnJhbWVWaWV3OworICAgIGNsYXNzIFBhZ2U7Cisg
ICAgCisgICAgY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgU1ZHSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciopOworICAgICAgICB+U1ZHSW1h
Z2UoKTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7Cisg
ICAgICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRl
eChzaXplX3QpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgCitwcml2YXRlOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICAK
KyAgICAgICAgU1ZHRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgICAgIHNpemVfdCBtX2xhc3RE
YXRhT2Zmc2V0OworICAgICAgICBQYWdlKiBtX3BhZ2U7CisgICAgICAgIFJlZlB0cjxGcmFtZT4g
bV9mcmFtZTsKKyAgICAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV9mcmFtZVZpZXc7CisgICAgICAg
IEludFNpemUgbV9taW5TaXplOworICAgIH07Cit9CisKKyNlbmRpZiAvLyBTVkdfU1VQUE9SVAor
CisjZW5kaWYKSW5kZXg6IHBsYXRmb3JtL2NnL0JpdG1hcEltYWdlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL2NnL0JpdG1hcEltYWdlQ0cuY3BwCShyZXZpc2lvbiAxNjUyMikKKysrIHBs
YXRmb3JtL2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlLmgiCisjaW5j
bHVkZSAiQml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKENHKQogCkBAIC01MSwxMiArNTEs
MTIgQEAgdm9pZCBGcmFtZURhdGE6OmNsZWFyKCkKIH0KIAogLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBJbWFnZSBDbGFzcworLy8gQml0bWFw
SW1hZ2UgQ2xhc3MKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQogCiAvLyBEcmF3aW5nIFJvdXRpbmVzCiAKLXZvaWQgSW1hZ2U6OmNoZWNrRm9yU29s
aWRDb2xvcigpCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogewogICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwpA
QCAtOTAsMzEgKzkwLDMwIEBAIENHSW1hZ2VSZWYgSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQogICAg
IHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCitzdGF0aWMgaW5saW5lIHZv
aWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wKQoreworICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkgeworICAgICAgICBjdHh0LT5zYXZl
KCk7CisgICAgICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEo
KSAmJiBjb21wb3NpdGVPcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6
IGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgY3R4dC0+ZmlsbFJlY3QocmVjdCwgY29sb3IpOworICAg
ICAgICBjdHh0LT5yZXN0b3JlKCk7CisgICAgfQorfQorCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewotICAg
IGlmIChtX2lzUERGKSB7Ci0gICAgICAgIGlmIChtX1BERkRvYykKLSAgICAgICAgICAgIG1fUERG
RG9jLT5kcmF3KGN0eHQsIHNyY1JlY3QsIGRzdFJlY3QsIGNvbXBvc2l0ZU9wKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0gCi0gICAgCiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQ0dSZWN0IGZyID0gY3R4dC0+cm91bmRUb0Rldmlj
ZVBpeGVscyhzcmNSZWN0KTsKICAgICBDR1JlY3QgaXIgPSBjdHh0LT5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGRzdFJlY3QpOwogCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1
cnJlbnRGcmFtZSk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChjdXJyZW50
RnJhbWUoKSk7CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3Qg
aGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2lzU29saWRD
b2xvciAmJiBtX2N1cnJlbnRGcmFtZSA9PSAwKSB7Ci0gICAgICAgIGlmIChtX3NvbGlkQ29sb3Iu
YWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAgIGN0eHQtPnNhdmUoKTsKLSAgICAgICAgICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbighbV9zb2xpZENvbG9yLmhhc0FscGhhKCkgJiYgY29t
cG9zaXRlT3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBjb21wb3Np
dGVPcCk7Ci0gICAgICAgICAgICBjdHh0LT5maWxsUmVjdChpciwgbV9zb2xpZENvbG9yKTsKLSAg
ICAgICAgICAgIGN0eHQtPnJlc3RvcmUoKTsKLSAgICAgICAgfQorICAgIGlmICgoY2FuRmlsbFdp
dGhTb2xpZENvbG9yKCkpKSB7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBpciwg
c29saWRDb2xvcigpLCBjb21wb3NpdGVPcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE3MywxMiArMTcyLDExIEBAIHZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0
LCAKICAgICBjdHh0LT5yZXN0b3JlKCk7CiAgICAgCiAgICAgc3RhcnRBbmltYXRpb24oKTsKLQog
fQogCiBzdGF0aWMgdm9pZCBkcmF3UGF0dGVybih2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29u
dGV4dCkKIHsKLSAgICBJbWFnZSogZGF0YSA9IChJbWFnZSopaW5mbzsKKyAgICBCaXRtYXBJbWFn
ZSogZGF0YSA9IChCaXRtYXBJbWFnZSopaW5mbzsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gZGF0
YS0+ZnJhbWVBdEluZGV4KGRhdGEtPmN1cnJlbnRGcmFtZSgpKTsKICAgICBmbG9hdCB3ID0gQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSk7CkBAIC0xOTEsMTcgKzE4OSwxMiBAQCBzdGF0aWMgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tz
IHBhdHRlcm5DCiB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwKICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKIHsgICAgCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1faXNTb2xpZENvbG9yICYmIG1fY3VycmVudEZyYW1lID09IDApIHsKLSAgICAgICAgaWYgKG1f
c29saWRDb2xvci5hbHBoYSgpID4gMCkgewotICAgICAgICAgICAgY3R4dC0+c2F2ZSgpOwotICAg
ICAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFtX3NvbGlkQ29sb3IuaGFzQWxw
aGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsK
LSAgICAgICAgICAgIGN0eHQtPmZpbGxSZWN0KGRlc3RSZWN0LCBtX3NvbGlkQ29sb3IpOwotICAg
ICAgICAgICAgY3R4dC0+cmVzdG9yZSgpOwotICAgICAgICB9CisgICAgaWYgKChjYW5GaWxsV2l0
aFNvbGlkQ29sb3IoKSkpIHsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RS
ZWN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjgw
LDE3ICsyNzMsMTIgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwog
dm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIFRpbGVSdWxlIGhSdWxlLAog
ICAgICAgICAgICAgICAgICAgICAgIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKIHsgICAgCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUo
KSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faXNTb2xp
ZENvbG9yICYmIG1fY3VycmVudEZyYW1lID09IDApIHsKLSAgICAgICAgaWYgKG1fc29saWRDb2xv
ci5hbHBoYSgpID4gMCkgewotICAgICAgICAgICAgY3R4dC0+c2F2ZSgpOwotICAgICAgICAgICAg
Y3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFtX3NvbGlkQ29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICAgICAg
ICAgIGN0eHQtPmZpbGxSZWN0KGRzdFJlY3QsIG1fc29saWRDb2xvcik7Ci0gICAgICAgICAgICBj
dHh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoKGNhbkZpbGxXaXRoU29saWRDb2xv
cigpKSkgeworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRD
b2xvcigpLCBvcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IHBsYXRmb3JtL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE2NTQxKQorKysgcGxhdGZvcm0vY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjUsMTEgKzY2NSwxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cm90YXRlKGZsb2F0IGFuZ2xlCiAgICAgQ0dDb250ZXh0Um90YXRlQ1RN
KHBsYXRmb3JtQ29udGV4dCgpLCBhbmdsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0
cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xh
dGUoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQoKSwgeCwgeSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4
dCgpLCBvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKSW5k
ZXg6IHBsYXRmb3JtL2NnL0ltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2NnL0lt
YWdlQ0cuY3BwCShyZXZpc2lvbiAxNjU0MSkKKysrIHBsYXRmb3JtL2NnL0ltYWdlQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDM3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLQotI2lmIFBM
QVRGT1JNKENHKQotCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBGcmFtZURh
dGE6OmNsZWFyKCkKLXsKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBDRlJlbGVhc2UobV9m
cmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwotICAgICAgICBtX2R1cmF0aW9uID0gMC47Ci0g
ICAgICAgIG1faGFzQWxwaGEgPSB0cnVlOwotICAgIH0KLX0KLQotLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBJbWFnZSBDbGFzcwotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS8vIERyYXdp
bmcgUm91dGluZXMKLQotdm9pZCBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBp
ZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleCgwKTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xv
ciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KLSAgICAgICAg
aWYgKGltYWdlICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKSA9PSAxKSB7Ci0gICAgICAgICAgICBDR0Zsb2F0IHBpeGVsWzRdOyAvLyBSR0JB
Ci0gICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYgc3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBibWFwID0gQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKCZwaXhlbCwgMSwgMSwgOCpzaXplb2YoZmxvYXQpLCBzaXplb2YocGl4ZWwpLCBz
cGFjZSwKLSAgICAgICAgICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBr
Q0dCaXRtYXBGbG9hdENvbXBvbmVudHMgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpOwotICAg
ICAgICAgICAgaWYgKGJtYXApIHsKLSAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQoYm1h
cCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICAgICAgICAg
IENHUmVjdCBkc3QgPSB7IHswLCAwfSwgezEsIDF9IH07Ci0gICAgICAgICAgICAgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKGJtYXAsIGRzdCwgaW1hZ2UpOwotICAgICAgICAgICAgICAgIGlmIChwaXhl
bFszXSA9PSAwKQotICAgICAgICAgICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcigwLCAw
LCAwLCAwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc29s
aWRDb2xvciA9IENvbG9yKGludChwaXhlbFswXSAvIHBpeGVsWzNdICogMjU1KSwgaW50KHBpeGVs
WzFdIC8gcGl4ZWxbM10gKiAyNTUpLCBpbnQocGl4ZWxbMl0gLyBwaXhlbFszXSAqIDI1NSksIGlu
dChwaXhlbFszXSAqIDI1NSkpOwotICAgICAgICAgICAgICAgIG1faXNTb2xpZENvbG9yID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBDRlJlbGVhc2UoYm1hcCk7Ci0gICAgICAgICAgICB9IAotICAg
ICAgICAgICAgQ0ZSZWxlYXNlKHNwYWNlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ0dJbWFn
ZVJlZiBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCi17Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleCgw
KTsKLX0KLQotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCkKLXsKLSAgICBpZiAobV9pc1BERikgewotICAgICAgICBpZiAobV9Q
REZEb2MpCi0gICAgICAgICAgICBtX1BERkRvYy0+ZHJhdyhjdHh0LCBzcmNSZWN0LCBkc3RSZWN0
LCBjb21wb3NpdGVPcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IAotICAgIAotICAgIGlmICgh
bV9zb3VyY2UuaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIENHUmVj
dCBmciA9IGN0eHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoc3JjUmVjdCk7Ci0gICAgQ0dSZWN0IGly
ID0gY3R4dC0+cm91bmRUb0RldmljZVBpeGVscyhkc3RSZWN0KTsKLQotICAgIENHSW1hZ2VSZWYg
aW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlmICghaW1hZ2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkg
ewotICAgICAgICBpZiAobV9zb2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBj
dHh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1f
c29saWRDb2xvci5oYXNBbHBoYSgpICYmIGNvbXBvc2l0ZU9wID09IENvbXBvc2l0ZVNvdXJjZU92
ZXIgPyBDb21wb3NpdGVDb3B5IDogY29tcG9zaXRlT3ApOwotICAgICAgICAgICAgY3R4dC0+Zmls
bFJlY3QoaXIsIG1fc29saWRDb2xvcik7Ci0gICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gY3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY3R4dC0+c2F2ZSgpOwotCi0gICAg
Ly8gR2V0IHRoZSBoZWlnaHQgKGluIGFkanVzdGVkLCBpLmUuIHNjYWxlZCwgY29vcmRzKSBvZiB0
aGUgcG9ydGlvbiBvZiB0aGUgaW1hZ2UKLSAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBkZWNvZGVk
LiAgVGhpcyBjb3VsZCBiZSBsZXNzIHRoYXQgdGhlIGFjdHVhbCBoZWlnaHQuCi0gICAgQ0dTaXpl
IHNlbGZTaXplID0gc2l6ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVsbCBpbWFn
ZSBzaXplLCBpbiBwaXhlbHMKLSAgICBmbG9hdCBjdXJIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlKTsgICAgICAgICAvLyBoZWlnaHQgb2YgbG9hZGVkIHBvcnRpb24sIGluIHBpeGVscwot
ICAgIAotICAgIENHU2l6ZSBhZGp1c3RlZFNpemUgPSBzZWxmU2l6ZTsKLSAgICBpZiAoY3VySGVp
Z2h0IDwgc2VsZlNpemUuaGVpZ2h0KSB7Ci0gICAgICAgIGFkanVzdGVkU2l6ZS5oZWlnaHQgKj0g
Y3VySGVpZ2h0IC8gc2VsZlNpemUuaGVpZ2h0OwotCi0gICAgICAgIC8vIElzIHRoZSBhbW91bnQg
b2YgYXZhaWxhYmxlIGJhbmRzIGxlc3MgdGhhbiB3aGF0IHdlIG5lZWQgdG8gZHJhdz8gIElmIHNv
LAotICAgICAgICAvLyB3ZSBtYXkgaGF2ZSB0byBjbGlwICdmcicgaWYgaXQgZ29lcyBvdXRzaWRl
IHRoZSBhdmFpbGFibGUgYm91bmRzLgotICAgICAgICBpZiAoQ0dSZWN0R2V0TWF4WShmcikgPiBh
ZGp1c3RlZFNpemUuaGVpZ2h0KSB7Ci0gICAgICAgICAgICBmbG9hdCBmckhlaWdodCA9IGFkanVz
dGVkU2l6ZS5oZWlnaHQgLSBmci5vcmlnaW4ueTsgLy8gY2xpcCBmciB0byBhdmFpbGFibGUgYm91
bmRzCi0gICAgICAgICAgICBpZiAoZnJIZWlnaHQgPD0gMCkKLSAgICAgICAgICAgICAgICByZXR1
cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xpcHBl
ZCBvdXQgZW50aXJlbHkKLSAgICAgICAgICAgIGlyLnNpemUuaGVpZ2h0ICo9IChmckhlaWdodCAv
IGZyLnNpemUuaGVpZ2h0KTsgICAgLy8gc2NhbGUgaXIgcHJvcG9ydGlvbmFsbHkgdG8gZnIKLSAg
ICAgICAgICAgIGZyLnNpemUuaGVpZ2h0ID0gZnJIZWlnaHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBGbGlwIHRoZSBjb29yZHMuCi0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KGNvbXBvc2l0ZU9wKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgaXIub3Jp
Z2luLngsIGlyLm9yaWdpbi55KTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAt
MSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1pci5zaXplLmhlaWdo
dCk7Ci0gICAgCi0gICAgLy8gVHJhbnNsYXRlZCB0byBvcmlnaW4sIG5vdyBkcmF3IGF0IDAsMC4K
LSAgICBpci5vcmlnaW4ueCA9IGlyLm9yaWdpbi55ID0gMDsKLSAgICAKLSAgICAvLyBJZiB3ZSdy
ZSBkcmF3aW5nIGEgc3ViIHBvcnRpb24gb2YgdGhlIGltYWdlIHRoZW4gY3JlYXRlCi0gICAgLy8g
YSBpbWFnZSBmb3IgdGhlIHN1YiBwb3J0aW9uIGFuZCBkcmF3IHRoYXQuCi0gICAgLy8gVGVzdCB1
c2luZyBleGFtcGxlIHNpdGUgYXQgaHR0cDovL3d3dy5tZXllcndlYi5jb20vZXJpYy9jc3MvZWRn
ZS9jb21wbGV4c3BpcmFsL2RlbW8uaHRtbAotICAgIGlmIChmci5zaXplLndpZHRoICE9IGFkanVz
dGVkU2l6ZS53aWR0aCB8fCBmci5zaXplLmhlaWdodCAhPSBhZGp1c3RlZFNpemUuaGVpZ2h0KSB7
Ci0gICAgICAgIC8vIENvbnZlcnQgZnQgdG8gaW1hZ2UgcGl4ZWwgY29vcmRzOgotICAgICAgICBm
bG9hdCB4c2NhbGUgPSBhZGp1c3RlZFNpemUud2lkdGggLyBzZWxmU2l6ZS53aWR0aDsKLSAgICAg
ICAgZmxvYXQgeXNjYWxlID0gYWRqdXN0ZWRTaXplLmhlaWdodCAvIGN1ckhlaWdodDsgICAgIC8v
IHllcywgY3VySGVpZ2h0LCBub3Qgc2VsZlNpemUuaGVpZ2h0IQotICAgICAgICBmci5vcmlnaW4u
eCAvPSB4c2NhbGU7Ci0gICAgICAgIGZyLm9yaWdpbi55IC89IHlzY2FsZTsKLSAgICAgICAgZnIu
c2l6ZS53aWR0aCAvPSB4c2NhbGU7Ci0gICAgICAgIGZyLnNpemUuaGVpZ2h0IC89IHlzY2FsZTsK
LSAgICAgICAgCi0gICAgICAgIGltYWdlID0gQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChp
bWFnZSwgZnIpOwotICAgICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LCBpciwgaW1hZ2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGltYWdl
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSAvLyBEcmF3IHRoZSB3aG9sZSBpbWFnZS4KLSAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGlyLCBpbWFnZSk7Ci0KLSAgICBjdHh0LT5y
ZXN0b3JlKCk7Ci0gICAgCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLQotfQotCi1zdGF0aWMgdm9p
ZCBkcmF3UGF0dGVybih2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAgICBJ
bWFnZSogZGF0YSA9IChJbWFnZSopaW5mbzsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZGF0YS0+
ZnJhbWVBdEluZGV4KGRhdGEtPmN1cnJlbnRGcmFtZSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7
Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dChjb250ZXh0
KS5yb3VuZFRvRGV2aWNlUGl4ZWxzKEZsb2F0UmVjdAotICAgICAgICAoMCwgZGF0YS0+c2l6ZSgp
LmhlaWdodCgpIC0gaCwgdywgaCkpLCBpbWFnZSk7ICAgIAotfQotCi1zdGF0aWMgY29uc3QgQ0dQ
YXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuLCBOVUxM
IH07Ci0KLXZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQoteyAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bV9pc1NvbGlkQ29sb3IgJiYgbV9jdXJyZW50RnJhbWUgPT0gMCkgewotICAgICAgICBpZiAobV9z
b2xpZENvbG9yLmFscGhhKCkgPiAwKSB7Ci0gICAgICAgICAgICBjdHh0LT5zYXZlKCk7Ci0gICAg
ICAgICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIW1fc29saWRDb2xvci5oYXNBbHBo
YSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwot
ICAgICAgICAgICAgY3R4dC0+ZmlsbFJlY3QoZGVzdFJlY3QsIG1fc29saWRDb2xvcik7Ci0gICAg
ICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIENHUG9pbnQgc2NhbGVkUG9pbnQgPSBzcmNQb2ludDsKLSAgICBDR1NpemUgaW50
cmluc2ljVGlsZVNpemUgPSBzaXplKCk7Ci0gICAgQ0dTaXplIHNjYWxlZFRpbGVTaXplID0gaW50
cmluc2ljVGlsZVNpemU7Ci0KLSAgICAvLyBJZiB0aWxlU2l6ZSBpcyBub3QgZXF1YWwgdG8gdGhl
IGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSwgc2V0IHBhdHRlcm5UcmFuc2Zvcm0KLSAgICAv
LyB0byB0aGUgYXBwcm9wcmlhdGUgc2NhbGFyIG1hdHJpeCwgc2NhbGUgdGhlIHNvdXJjZSBwb2lu
dCwgYW5kIHNldCB0aGUgc2l6ZSBvZiB0aGUKLSAgICAvLyBzY2FsZWQgdGlsZS4gCi0gICAgZmxv
YXQgc2NhbGVYID0gMS4wOwotICAgIGZsb2F0IHNjYWxlWSA9IDEuMDsKLSAgICBDR0FmZmluZVRy
YW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAg
ICBpZiAodGlsZVNpemUud2lkdGgoKSAhPSBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCB8fCB0aWxl
U2l6ZS5oZWlnaHQoKSAhPSBpbnRyaW5zaWNUaWxlU2l6ZS5oZWlnaHQpIHsKLSAgICAgICAgc2Nh
bGVYID0gdGlsZVNpemUud2lkdGgoKSAvIGludHJpbnNpY1RpbGVTaXplLndpZHRoOwotICAgICAg
ICBzY2FsZVkgPSB0aWxlU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXplLmhlaWdodDsK
LSAgICAgICAgcGF0dGVyblRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHNj
YWxlWCwgc2NhbGVZKTsKLSAgICAgICAgc2NhbGVkVGlsZVNpemUgPSB0aWxlU2l6ZTsKLSAgICB9
Ci0KLSAgICAvLyBDaGVjayBhbmQgc2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNh
biBjb3ZlciB0aGUgZW50aXJlIGFyZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgQ0dS
ZWN0IG9uZVRpbGVSZWN0OwotICAgIG9uZVRpbGVSZWN0Lm9yaWdpbi54ID0gZGVzdFJlY3QueCgp
ICsgZm1vZGYoZm1vZGYoLXNjYWxlZFBvaW50LngsIHNjYWxlZFRpbGVTaXplLndpZHRoKSAtIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFRpbGVTaXplLndpZHRoLCBzY2FsZWRU
aWxlU2l6ZS53aWR0aCk7Ci0gICAgb25lVGlsZVJlY3Qub3JpZ2luLnkgPSBkZXN0UmVjdC55KCkg
KyBmbW9kZihmbW9kZigtc2NhbGVkUG9pbnQueSwgc2NhbGVkVGlsZVNpemUuaGVpZ2h0KSAtIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFRpbGVTaXplLmhlaWdodCwgc2NhbGVk
VGlsZVNpemUuaGVpZ2h0KTsKLSAgICBvbmVUaWxlUmVjdC5zaXplLndpZHRoID0gc2NhbGVkVGls
ZVNpemUud2lkdGg7Ci0gICAgb25lVGlsZVJlY3Quc2l6ZS5oZWlnaHQgPSBzY2FsZWRUaWxlU2l6
ZS5oZWlnaHQ7Ci0KLSAgICAvLyBJZiB0aGUgc2luZ2xlIGltYWdlIGRyYXcgY292ZXJzIHRoZSB3
aG9sZSBhcmVhLCB0aGVuIGp1c3QgZHJhdyBvbmNlLgotICAgIGlmIChDR1JlY3RDb250YWluc1Jl
Y3Qob25lVGlsZVJlY3QsIGRlc3RSZWN0KSkgewotICAgICAgICBDR1JlY3QgZnJvbVJlY3Q7Ci0g
ICAgICAgIGZyb21SZWN0Lm9yaWdpbi54ID0gKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0Lm9y
aWdpbi54KSAvIHNjYWxlWDsKLSAgICAgICAgZnJvbVJlY3Qub3JpZ2luLnkgPSAoZGVzdFJlY3Qu
eSgpIC0gb25lVGlsZVJlY3Qub3JpZ2luLnkpIC8gc2NhbGVZOwotICAgICAgICBmcm9tUmVjdC5z
aXplLndpZHRoID0gZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlWDsKLSAgICAgICAgZnJvbVJlY3Qu
c2l6ZS5oZWlnaHQgPSBkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlWTsKLQotICAgICAgICBkcmF3
KGN0eHQsIGRlc3RSZWN0LCBmcm9tUmVjdCwgb3ApOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQ0dQYXR0ZXJuUmVmIHBhdHRlcm4gPSBDR1BhdHRlcm5DcmVhdGUodGhpcywgQ0dSZWN0
TWFrZSgwLCAwLCBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCwgaW50cmluc2ljVGlsZVNpemUuaGVp
Z2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtLCBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCwgaW50cmluc2ljVGlsZVNpemUuaGVp
Z2h0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dQYXR0
ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCB0cnVlLCAmcGF0dGVybkNhbGxiYWNrcyk7Ci0gICAg
Ci0gICAgaWYgKHBhdHRlcm4pIHsKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjdHh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgICAgICBjdHh0LT5zYXZlKCk7Ci0KLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIC8vIEZJWE1FOiBSZWFsbHkgd2FudCBhIHB1YmxpYyBBUEkgZm9y
IHRoaXMuCi0gICAgICAgIHdrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2UoY29udGV4dCwgQ0dQ
b2ludE1ha2Uob25lVGlsZVJlY3Qub3JpZ2luLngsIG9uZVRpbGVSZWN0Lm9yaWdpbi55KSk7Ci0j
ZW5kaWYKLQotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybihOVUxMKTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3Bh
Y2UoY29udGV4dCwgcGF0dGVyblNwYWNlKTsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShw
YXR0ZXJuU3BhY2UpOwotCi0gICAgICAgIENHRmxvYXQgcGF0dGVybkFscGhhID0gMTsKLSAgICAg
ICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oY29udGV4dCwgcGF0dGVybiwgJnBhdHRlcm5BbHBo
YSk7Ci0KLSAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKLQotICAgICAg
ICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBkZXN0UmVjdCk7Ci0KLSAgICAgICAgY3R4dC0+
cmVzdG9yZSgpOwotCi0gICAgICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVybik7Ci0gICAgfQot
ICAgIAotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci19Ci0KLS8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIFRpbGVSdWxlIGhSdWxlLAotICAgICAgICAgICAgICAgICAgICAgIFRpbGVSdWxl
IHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKLXsgICAgCi0gICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNTb2xpZENvbG9yICYmIG1fY3VycmVudEZyYW1lID09
IDApIHsKLSAgICAgICAgaWYgKG1fc29saWRDb2xvci5hbHBoYSgpID4gMCkgewotICAgICAgICAg
ICAgY3R4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KCFtX3NvbGlkQ29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8g
Q29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICAgICAgICAgIGN0eHQtPmZpbGxSZWN0KGRzdFJlY3Qs
IG1fc29saWRDb2xvcik7Ci0gICAgICAgICAgICBjdHh0LT5yZXN0b3JlKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGN0eHQtPnNhdmUoKTsKLQotICAgIENHU2l6
ZSB0aWxlU2l6ZSA9IHNyY1JlY3Quc2l6ZSgpOwotICAgIENHUmVjdCBpciA9IGRzdFJlY3Q7Ci0g
ICAgQ0dSZWN0IGZyID0gc3JjUmVjdDsKLQotICAgIC8vIE5vdyBzY2FsZSB0aGUgc2xpY2UgaW4g
dGhlIGFwcHJvcHJpYXRlIGRpcmVjdGlvbiB1c2luZyBhbiBhZmZpbmUgdHJhbnNmb3JtIHRoYXQg
d2Ugd2lsbCBwYXNzIGludG8KLSAgICAvLyB0aGUgcGF0dGVybi4KLSAgICBmbG9hdCBzY2FsZVgg
PSAxLjBmLCBzY2FsZVkgPSAxLjBmOwotCi0gICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkKLSAgICAgICAgc2NhbGVYID0gaXIuc2l6ZS53aWR0aCAvIGZyLnNpemUud2lkdGg7Ci0g
ICAgaWYgKHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkKLSAgICAgICAgc2NhbGVZID0gaXIu
c2l6ZS5oZWlnaHQgLyBmci5zaXplLmhlaWdodDsKLSAgICAKLSAgICBpZiAoaFJ1bGUgPT0gSW1h
Z2U6OlJlcGVhdFRpbGUpCi0gICAgICAgIHNjYWxlWCA9IHNjYWxlWTsKLSAgICBpZiAodlJ1bGUg
PT0gSW1hZ2U6OlJlcGVhdFRpbGUpCi0gICAgICAgIHNjYWxlWSA9IHNjYWxlWDsKLSAgICAgICAg
Ci0gICAgaWYgKGhSdWxlID09IEltYWdlOjpSb3VuZFRpbGUpIHsKLSAgICAgICAgLy8gQ29tcGxp
Y2F0ZWQgbWF0aCBlbnN1ZXMuCi0gICAgICAgIGZsb2F0IGltYWdlV2lkdGggPSBmci5zaXplLndp
ZHRoICogc2NhbGVZOwotICAgICAgICBmbG9hdCBuZXdXaWR0aCA9IGlyLnNpemUud2lkdGggLyBj
ZWlsZihpci5zaXplLndpZHRoIC8gaW1hZ2VXaWR0aCk7Ci0gICAgICAgIHNjYWxlWCA9IG5ld1dp
ZHRoIC8gZnIuc2l6ZS53aWR0aDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHZSdWxlID09IEltYWdl
OjpSb3VuZFRpbGUpIHsKLSAgICAgICAgLy8gTW9yZSBjb21wbGljYXRlZCBtYXRoIGVuc3Vlcy4K
LSAgICAgICAgZmxvYXQgaW1hZ2VIZWlnaHQgPSBmci5zaXplLmhlaWdodCAqIHNjYWxlWDsKLSAg
ICAgICAgZmxvYXQgbmV3SGVpZ2h0ID0gaXIuc2l6ZS5oZWlnaHQgLyBjZWlsZihpci5zaXplLmhl
aWdodCAvIGltYWdlSGVpZ2h0KTsKLSAgICAgICAgc2NhbGVZID0gbmV3SGVpZ2h0IC8gZnIuc2l6
ZS5oZWlnaHQ7Ci0gICAgfQotICAgIAotICAgIENHQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShzY2FsZVgsIHNjYWxlWSk7Ci0KLSAg
ICAvLyBQb3NzaWJsZSBvcHRpbWl6YXRpb246ICBXZSBtYXkgd2FudCB0byBjYWNoZSB0aGUgQ0dQ
YXR0ZXJuUmVmICAgIAotICAgIENHUGF0dGVyblJlZiBwYXR0ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRl
KHRoaXMsIENHUmVjdE1ha2UoZnIub3JpZ2luLngsIGZyLm9yaWdpbi55LCB0aWxlU2l6ZS53aWR0
aCwgdGlsZVNpemUuaGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLCB0aWxlU2l6ZS53aWR0aCwgdGlsZVNpemUuaGVpZ2h0
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dQYXR0ZXJu
VGlsaW5nQ29uc3RhbnRTcGFjaW5nLCB0cnVlLCAmcGF0dGVybkNhbGxiYWNrcyk7Ci0gICAgaWYg
KHBhdHRlcm4pIHsKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjdHh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICAKLSAgICAgICAgLy8gV2Ugd2FudCB0byBjb25zdHJ1Y3QgdGhlIHBo
YXNlIHN1Y2ggdGhhdCB0aGUgcGF0dGVybiBpcyBjZW50ZXJlZCAod2hlbiBzdHJldGNoIGlzIG5v
dAotICAgICAgICAvLyBzZXQgZm9yIGEgcGFydGljdWxhciBydWxlKS4KLSAgICAgICAgZmxvYXQg
aFBoYXNlID0gc2NhbGVYICogZnIub3JpZ2luLng7Ci0gICAgICAgIGZsb2F0IHZQaGFzZSA9IHNj
YWxlWSAqICh0aWxlU2l6ZS5oZWlnaHQgLSBmci5vcmlnaW4ueSk7Ci0gICAgICAgIGlmIChoUnVs
ZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAgICAgIGhQaGFzZSAtPSBmbW9kZihpci5z
aXplLndpZHRoLCBzY2FsZVggKiB0aWxlU2l6ZS53aWR0aCkgLyAyLjBmOwotICAgICAgICBpZiAo
dlJ1bGUgPT0gSW1hZ2U6OlJlcGVhdFRpbGUpCi0gICAgICAgICAgICB2UGhhc2UgLT0gZm1vZGYo
aXIuc2l6ZS5oZWlnaHQsIHNjYWxlWSAqIHRpbGVTaXplLmhlaWdodCkgLyAyLjBmOwotICAgICAg
ICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIC8vIEZJWE1FOiBSZWFsbHkgd2FudCBhIHB1
YmxpYyBBUEkgZm9yIHRoaXMuCi0gICAgICAgIHdrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2Uo
Y29udGV4dCwgQ0dQb2ludE1ha2UoaXIub3JpZ2luLnggLSBoUGhhc2UsIGlyLm9yaWdpbi55IC0g
dlBoYXNlKSk7Ci0jZW5kaWYKLQotICAgICAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihOVUxMKTsKLSAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlKTsKLSAgICAgICAgQ0dDb2xvclNw
YWNlUmVsZWFzZShwYXR0ZXJuU3BhY2UpOwotCi0gICAgICAgIENHRmxvYXQgcGF0dGVybkFscGhh
ID0gMTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oY29udGV4dCwgcGF0dGVybiwg
JnBhdHRlcm5BbHBoYSk7Ci0KLSAgICAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9w
KTsKLSAgICAgICAgCi0gICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIGlyKTsKLQot
ICAgICAgICBDR1BhdHRlcm5SZWxlYXNlKHBhdHRlcm4pOwotICAgIH0KLQotICAgIGN0eHQtPnJl
c3RvcmUoKTsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFBM
QVRGT1JNKENHKQpJbmRleDogcGxhdGZvcm0vY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDE2NTQx
KQorKysgcGxhdGZvcm0vY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE1ICszNSwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBERkRvY3VtZW50SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoQ0ZEYXRhUmVmIGRhdGEp
CitQREZEb2N1bWVudEltYWdlOjpQREZEb2N1bWVudEltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2
ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX2RvY3VtZW50KDAp
CisgICAgLCBtX3JvdGF0aW9uKDBmKQorICAgICwgbV9jdXJyZW50UGFnZSgtMSkKIHsKLSAgICBp
ZiAoZGF0YSkgewotICAgICAgICBDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIgPSBDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSk7Ci0gICAgICAgIG1fZG9jdW1lbnQgPSBD
R1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlcik7Ci0gICAgICAgIENH
RGF0YVByb3ZpZGVyUmVsZWFzZShkYXRhUHJvdmlkZXIpOwotICAgIH0KLSAgICBtX2N1cnJlbnRQ
YWdlID0gLTE7Ci0gICAgc2V0Q3VycmVudFBhZ2UoMCk7CiB9CiAKIFBERkRvY3VtZW50SW1hZ2U6
On5QREZEb2N1bWVudEltYWdlKCkKQEAgLTEwNyw3ICsxMDQsMjMgQEAgaW50IFBERkRvY3VtZW50
SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBDR1BERkRv
Y3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50KSA6IDA7CiB9CiAKLXZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCkgY29uc3QKK0ludFNpemUgUERGRG9jdW1lbnRJbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEludFNpemUoKGludCltX21lZGlhQm94LnNpemUoKS53aWR0aCgpLCAoaW50KW1fbWVk
aWFCb3guc2l6ZSgpLmhlaWdodCgpKTsKK30KKworYm9vbCBQREZEb2N1bWVudEltYWdlOjpzZXRO
YXRpdmVEYXRhKE5hdGl2ZUJ5dGVQdHIgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7Cisg
ICAgaWYgKGFsbERhdGFSZWNlaXZlZCAmJiAhbV9kb2N1bWVudCAmJiBkYXRhKSB7CisgICAgICAg
IENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aENGRGF0YShkYXRhKTsKKyAgICAgICAgbV9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRDcmVhdGVX
aXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyKTsKKyAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNl
KGRhdGFQcm92aWRlcik7CisgICAgICAgIHNldEN1cnJlbnRQYWdlKDApOworICAgIH0KKyAgICBy
ZXR1cm4gbV9kb2N1bWVudDsgLy8gcmV0dXJuIHRydWUgaWYgc2l6ZSBpcyBhdmFpbGFibGUKK30K
Kwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBtX2N1cnJlbnRQYWdl
ID09IC0xKQogICAgICAgICByZXR1cm47CkluZGV4OiBwbGF0Zm9ybS9jZy9QREZEb2N1bWVudElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZp
c2lvbiAxNjU0MSkKKysrIHBsYXRmb3JtL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpZm5kZWYg
UERGRG9jdW1lbnRJbWFnZV9ICisjZGVmaW5lIFBERkRvY3VtZW50SW1hZ2VfSAorCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5
cGVzLmgiCiAKICNpZiBQTEFURk9STShDRykKIApAQCAtMzQsMTYgKzM3LDIwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAotICAgIGNsYXNzIFBE
RkRvY3VtZW50SW1hZ2UgeworICAgIGNsYXNzIFBERkRvY3VtZW50SW1hZ2UgOiBwdWJsaWMgSW1h
Z2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgUERGRG9jdW1lbnRJbWFnZShDRkRhdGFSZWYpOwor
ICAgICAgICBQREZEb2N1bWVudEltYWdlKEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIqID0gMCk7CiAg
ICAgICAgIH5QREZEb2N1bWVudEltYWdlKCk7Ci0KLSAgICAgICAgRmxvYXRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhQm94LnNpemUoKTsgfQotICAgICAgICB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yKSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIHZp
cnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzZXROYXRp
dmVEYXRhKE5hdGl2ZUJ5dGVQdHIsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgCisg
ICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1
cm4gMDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzZXRDdXJyZW50UGFnZShpbnQg
cGFnZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVP
cGVyYXRvcik7CisKKyAgICAgICAgdm9pZCBzZXRDdXJyZW50UGFnZShpbnQpOwogICAgICAgICBp
bnQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYWRqdXN0Q1RNKEdyYXBoaWNzQ29u
dGV4dCopIGNvbnN0OwogCkBAIC01Myw3ICs2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgbV9yb3RhdGlvbjsKICAgICAgICAgaW50IG1fY3VycmVudFBhZ2U7CiAgICAg
fTsKLQogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ0cpCisKKyNlbmRpZiAvLyBQREZEb2N1bWVu
dEltYWdlX0gKSW5kZXg6IHBsYXRmb3JtL21hYy9CaXRtYXBJbWFnZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBwbGF0Zm9ybS9tYWMvQml0bWFwSW1hZ2VNYWMubW0JKHJldmlzaW9uIDE2NTQxKQorKysg
cGxhdGZvcm0vbWFjL0JpdG1hcEltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiAr
MjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkltYWdlLmgiCisj
aW1wb3J0ICJCaXRtYXBJbWFnZS5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQg
IkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9y
dCAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbXBv
cnQgIldlYkNvcmVGcmFtZUJyaWRnZS5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgpAQCAtNDgsOSArNDcsNiBAQCB2b2lkIEltYWdlOjppbml0UGxhdGZvcm1EYXRhKCkKIAog
dm9pZCBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiB7Ci0gICAgaWYgKG1fZnJhbWVz
LnNpemUoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9uc0ltYWdlKSB7CiAg
ICAgICAgIENGUmVsZWFzZShtX25zSW1hZ2UpOwogICAgICAgICBtX25zSW1hZ2UgPSAwOwpAQCAt
NjgsNyArNjQsNyBAQCBJbWFnZSogSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0CiAg
ICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOltOU1N0cmlu
ZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJ0aWZmIl07CiAgICAgTlNEYXRh
ICpuYW1lZEltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTppbWFnZVBh
dGhdOwogICAgIGlmIChuYW1lZEltYWdlRGF0YSkgewotICAgICAgICBJbWFnZSogaW1hZ2UgPSBu
ZXcgSW1hZ2U7CisgICAgICAgIEltYWdlKiBpbWFnZSA9IG5ldyBCaXRtYXBJbWFnZTsKICAgICAg
ICAgaW1hZ2UtPnNldE5hdGl2ZURhdGEoKENGRGF0YVJlZiluYW1lZEltYWdlRGF0YSwgdHJ1ZSk7
CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CkBAIC0xMDQsNyArMTAwLDcgQEAgQ0ZEYXRh
UmVmIEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24oKQogICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CiAgICAgICAgIGlmICghY2dJbWFnZSkgewogICAgICAg
ICAgICAgQ0ZSZWxlYXNlKGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiAwOyAgICAK
KyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLCBjZ0ltYWdlLCAwKTsKICAgICB9CkluZGV4OiBwbGF0
Zm9ybS9tYWMvSW1hZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbWFjL0ltYWdlTWFj
Lm1tCShyZXZpc2lvbiAxNjU0MSkKKysrIHBsYXRmb3JtL21hYy9JbWFnZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJJbWFnZS5oIgotCi0jaW1wb3J0ICJGbG9h
dFJlY3QuaCIKLSNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2ltcG9ydCAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2ltcG9ydCAiUGxhdGZv
cm1TdHJpbmcuaCIKLSNpbXBvcnQgIldlYkNvcmVGcmFtZUJyaWRnZS5oIgotI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gSW1hZ2UgQ2xh
c3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Ci12b2lkIEltYWdlOjppbml0UGxhdGZvcm1EYXRhKCkKLXsKLSAgICBtX25zSW1hZ2UgPSAwOwot
ICAgIG1fdGlmZlJlcCA9IDA7Ci19Ci0KLXZvaWQgSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURh
dGEoKQotewotICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fbnNJbWFnZSkgewotICAgICAgICBDRlJlbGVhc2UobV9uc0ltYWdlKTsKLSAg
ICAgICAgbV9uc0ltYWdlID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV90aWZmUmVwKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShtX3RpZmZSZXApOwotICAgICAgICBtX3RpZmZSZXAgPSAwOwotICAgIH0K
LX0KLQotSW1hZ2UqIEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1l
KQotewotICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dl
YkNvcmVGcmFtZUJyaWRnZSBjbGFzc11dOwotICAgIE5TU3RyaW5nICppbWFnZVBhdGggPSBbYnVu
ZGxlIHBhdGhGb3JSZXNvdXJjZTpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6bmFtZV0g
b2ZUeXBlOkAidGlmZiJdOwotICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VQYXRoXTsKLSAgICBpZiAobmFtZWRJbWFnZURhdGEp
IHsKLSAgICAgICAgSW1hZ2UqIGltYWdlID0gbmV3IEltYWdlOwotICAgICAgICBpbWFnZS0+c2V0
TmF0aXZlRGF0YSgoQ0ZEYXRhUmVmKW5hbWVkSW1hZ2VEYXRhLCB0cnVlKTsKLSAgICAgICAgcmV0
dXJuIGltYWdlOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBJbWFnZTo6c3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICAvLyBGSVhNRTogV291bGQgYmUgYmV0
dGVyIGlmIHRoaXMgd2FzIGxvb2tpbmcgaW4gYSBzZXQgcmF0aGVyIHRoYW4gYW4gTlNBcnJheS4K
LSAgICAvLyBGSVhNRTogV291bGQgYmUgYmV0dGVyIG5vdCB0byBjb252ZXJ0IHRvIGFuIE5TU3Ry
aW5nIGp1c3QgdG8gY2hlY2sgaWYgYSB0eXBlIGlzIHN1cHBvcnRlZC4KLSAgICByZXR1cm4gW1tX
ZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10gY29udGFp
bnNPYmplY3Q6dHlwZV07Ci19Ci0KLUNGRGF0YVJlZiBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKCkKLXsKLSAgICBpZiAobV90aWZmUmVwKQotICAgICAgICByZXR1cm4gbV90aWZmUmVwOwot
ICAgIAotICAgIHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQoKTsKLSAgICAKLSAgICAv
LyBJZiBudW1GcmFtZXMgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRv
ZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCi0gICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJ
bWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUg
aXQgZ3JhY2VmdWxseSwKLSAgICAvLyBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhhdCBjYWxs
IHdpbGwgc3BhbSB0aGUgY29uc29sZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UKLSAgICBpZiAoIW51
bUZyYW1lcykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhID0g
Q0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKTsKLSAgICAvLyBGSVhNRTogIFVzZSB0eXBlIGtDR0lt
YWdlVHlwZUlkZW50aWZpZXJUSUZGIGNvbnN0YW50IG9uY2UgaXMgYmVjb21lcyBhdmFpbGFibGUg
aW4gdGhlIEFQSQotICAgIENHSW1hZ2VEZXN0aW5hdGlvblJlZiBkZXN0aW5hdGlvbiA9IENHSW1h
Z2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEsIENGU1RSKCJwdWJsaWMudGlmZiIpLCBu
dW1GcmFtZXMsIDApOwotICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAg
ICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmICghY2dJ
bWFnZSkgewotICAgICAgICAgICAgQ0ZSZWxlYXNlKGRlc3RpbmF0aW9uKTsKLSAgICAgICAgICAg
IHJldHVybiAwOyAgICAKLSAgICAgICAgfQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShkZXN0aW5hdGlvbiwgY2dJbWFnZSwgMCk7Ci0gICAgfQotICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uKTsKLSAgICBDRlJlbGVhc2UoZGVzdGluYXRpb24pOwot
Ci0gICAgbV90aWZmUmVwID0gZGF0YTsKLSAgICByZXR1cm4gbV90aWZmUmVwOwotfQotCi1OU0lt
YWdlKiBJbWFnZTo6Z2V0TlNJbWFnZSgpCi17Ci0gICAgaWYgKG1fbnNJbWFnZSkKLSAgICAgICAg
cmV0dXJuIG1fbnNJbWFnZTsKLQotICAgIENGRGF0YVJlZiBkYXRhID0gZ2V0VElGRlJlcHJlc2Vu
dGF0aW9uKCk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBt
X25zSW1hZ2UgPSBIYXJkUmV0YWluV2l0aE5TUmVsZWFzZShbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoRGF0YTooTlNEYXRhKilkYXRhXSk7Ci0gICAgcmV0dXJuIG1fbnNJbWFnZTsKLX0KLQotfQpJ
bmRleDogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAxNjU0MSkKKysrIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTQyNyw3ICs0MjgsNyBAQCB2b2lkIFJlbmRl
ckltYWdlOjpjYWxjTWluTWF4V2lkdGgoKQogCiBJbWFnZSogUmVuZGVySW1hZ2U6Om51bGxJbWFn
ZSgpCiB7Ci0gICAgc3RhdGljIEltYWdlIHNoYXJlZE51bGxJbWFnZTsKKyAgICBzdGF0aWMgQml0
bWFwSW1hZ2Ugc2hhcmVkTnVsbEltYWdlOwogICAgIHJldHVybiAmc2hhcmVkTnVsbEltYWdlOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12075</attachid>
            <date>2006-12-27 22:02:11 -0800</date>
            <delta_ts>2006-12-27 23:11:11 -0800</delta_ts>
            <desc>Another functional SVGImage patch</desc>
            <filename>svgimage.patch</filename>
            <type>text/plain</type>
            <size>53100</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NDQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsMTggQEAKLTIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJp
Y0Blc2VpZGVsLmNvbT4KKzIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGVzdCBjYXNlcyBmb3IgU1ZHSW1hZ2UKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTk3MQorCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
Z2lmLXdpdGgtb2Zmc2V0cy1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXdpdGgtb2Zmc2V0cy1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi1maXhlZC1zaXplLXJlY3Quc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdmctYXMtYmFja2dyb3VuZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdmctYXMtaW1hZ2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9pbWFnZXMvc3ZnLWFzLXRpbGVkLWJhY2tncm91bmQuaHRtbDogQWRkZWQu
CisKKzIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IGdnYXJlbi4KICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi13aXRoLW9mZnNldHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACis1MjcyZmY1Y2QwMWFhMTdlMDIwYWIxNGE5MzIzNTJhYQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1h
cy1iYWNrZ3JvdW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
c3ZnLWFzLWJhY2tncm91bmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3N2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeworICBiYWNrZ3JvdW5kOiByZWQ7Cisg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybChy
ZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0LnN2Zyk7CisgIGhlaWdodDogMTAwcHg7Cisg
IHdpZHRoOiAxMDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0nbWFyZ2lu
OiAwcHgnPgorPGRpdj4mbmJzcDs8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtaW1h
Z2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtaW1h
Z2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1hcy1p
bWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorZGl2IHsKKyAgYmFja2dyb3VuZDogcmVkOworICBoZWlnaHQ6IDEwMHB4OworICB3
aWR0aDogMTAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9J21hcmdpbjog
MHB4Jz4KKzxkaXY+CisgIDxpbWcgc3JjPSdyZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0
LnN2Zyc+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtdGlsZWQtYmFja2dyb3Vu
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1hcy10aWxl
ZC1iYWNrZ3JvdW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9zdmctYXMtdGlsZWQtYmFja2dyb3VuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2IHsKKyAgYmFja2dyb3VuZDogcmVkOwor
ICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OworICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTog
NTAlOworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwocmVzb3VyY2VzL2dyZWVuLWZpeGVkLXNpemUt
cmVjdC5zdmcpOworICBoZWlnaHQ6IDEwMHB4OworICB3aWR0aDogMTAwcHg7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KKzxkaXY+CisgICZuYnNwOwor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2dyZWVuLWZpeGVkLXNpemUtcmVj
dC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2dy
ZWVuLWZpeGVkLXNpemUtcmVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9yZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0LnN2ZwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9JzEwMHB4JyBoZWlnaHQ9JzEwMHB4Jz4KKyAgICA8cmVjdCBmaWxsPSdncmVlbicgd2lk
dGg9JzEwMHB4JyBoZWlnaHQ9JzEwMHB4JyAvPgorPC9zdmc+CkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0NDkpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAw
Ni0xMi0yNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzOgorICAgICAgICAqIGZh
c3QvaW1hZ2VzL3N2Zy1hcy1pbWFnZS5odG1sCisgICAgICAgICogZmFzdC9pbWFnZXMvc3ZnLWFz
LWJhY2tncm91bmQuaHRtbAorICAgICAgICAqIGZhc3QvaW1hZ2VzL3N2Zy1hcy10aWxlZC1iYWNr
Z3JvdW5kLmh0bWwKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudCBhIGhhY2tpc2ggU1ZHSW1h
Z2UgZm9yIHRoZSAzcmQgdGltZS4KKyAgICAgICAgTm93IHVzaW5nIHRoZSBtb3N0IGdyb3Rlc3F1
ZXN0IGhhY2sga25vd24gdG8gbWFuLgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTcxCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OlNWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjp+U1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50
Ojp+U1ZHRW1wdHlDcm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21l
Q2xpZW50OjpjaHJvbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9t
ZUNsaWVudDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21l
Q2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OnBhZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmZvY3Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnVuZm9jdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmNyZWF0ZU1vZGFsRGlhbG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y2FuUnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6cnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlDcm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6bWVudWJhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUNyb21lQ2xpZW50OjpjbG9zZVdpbmRvd1Nvb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6flNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6aGFz
V2ViVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpo
YXNGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6aGFzQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlc2V0QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsSXRlbUlzVGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRQcm92aXNpb25hbEl0
ZW1Gcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmludmFsaWRhdGVDdXJyZW50SXRlbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Om1ha2VEb2N1bWVudFZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnNldERvY3VtZW50Vmlld0Zyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlGb3JD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dXBk
YXRlSGlzdG9yeUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVIaXN0b3J5Rm9yUmVsb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlGb3JT
dGFuZGFyZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6dXBkYXRlSGlzdG9yeUZvckludGVybmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVIaXN0b3J5QWZ0ZXJDbGllbnRSZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRDb3BpZXNP
blNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp0
b2tlbkZvckxvYWRFcnJvclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlc2V0QWZ0ZXJMb2FkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZG9Ob3RSZXNldEFmdGVyTG9hZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVu
dDEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNo
ZWRGcm9tUGFyZW50Mik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bG9hZGVkRnJvbVBhZ2VDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaElkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRNYWluUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2xl
YXJMb2FkaW5nRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50Ojppc0xvYWRpbmdGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRNYWluRG9jdW1l
bnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
bGVhclVuYXJjaGl2aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6cHJvZ3Jlc3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OnByb2dyZXNzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbXBsZXRlUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0TWFpbkZyYW1l
RG9jdW1lbnRSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmaW5hbFNldHVwRm9yUmVwbGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlz
dEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNo
b3VsZEZhbGxCYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6d2lsbFVzZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6aXNBcmNoaXZlTG9hZFBlbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUGVuZGluZ0FyY2hpdmVMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNsZWFyQXJjaGl2
ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Z2VuZXJhdGVkTUlNRVR5
cGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZnJhbWVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRT
dGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR0lt
YWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmZyYW1lQXRJbmRleCk6
CisKIDIwMDYtMTItMjcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXgsIHBsdXMgYSBmZXcgImRvdWJsZSAmIiA9PiAiZG91YmxlJiIgY2hhbmdl
cy4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxODQ0OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDc0LDYgKzIwNzQsOCBAQAogCQlBOEM0QTgwRDA5RDU2MzI3
MDAwM0FDOEQgLyogQXR0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDNEE3RkIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTgwRTA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi87IH07CiAJCUE4
QzRBODRDMDlENTY0OUQwMDAzQUM4RCAvKiBNYXBwZWRBdHRyaWJ1dGVFbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE4NEIwOUQ1NjQ5RDAw
MDNBQzhEIC8qIE1hcHBlZEF0dHJpYnV0ZUVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQThDOUREMjcwQjQzNzQyNjAwOTc4ODNBIC8qIFNW
R0ltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QzlERDI1MEI0Mzc0MjYwMDk3ODgzQSAvKiBTVkdJbWFnZS5jcHAgKi87IH07CisJCUE4QzlE
RDI4MEI0Mzc0MjYwMDk3ODgzQSAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDOUREMjYwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0lt
YWdlLmggKi87IH07CiAJCUE4Q0ZGMDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5
b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
Q0ZGMDQ4MEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCAqLzsgfTsKIAkJ
QThDRkYwNEUwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkYwNDkwQTE1NEYwOTAwMEE0
MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oICovOyB9OwogCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQy
MzQgLyogRml4ZWRUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDRkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlv
dXQuaCAqLzsgfTsKQEAgLTUwNDcsNiArNTA0OSw4IEBACiAJCUE4QzRBN0ZCMDlENTYzMjcwMDAz
QUM4RCAvKiBBdHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAv
KiBBdHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE4NEIwOUQ1NjQ5RDAwMDNBQzhE
IC8qIE1hcHBlZEF0dHJpYnV0ZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXBwZWRBdHRyaWJ1dGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBOEM5REQyNTBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBOEM5REQyNjBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThDRkYwNDgwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpeGVkVGFibGVMYXlv
dXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjA0OTBBMTU0RjA5MDAw
QTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdXRvVGFibGVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThD
RkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpeGVkVGFibGVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg0OTIsNiArODQ5Niw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlC
MkEwMTU5NzBBRjZDRDUzMDA2QkNFMEUgLyogY2cgKi8sCiAJCQkJQjJFMjdCREQwQjBGMkFFNTAw
RjE3QzdCIC8qIGZpbHRlcnMgKi8sCisJCQkJQThDOUREMjUwQjQzNzQyNjAwOTc4ODNBIC8qIFNW
R0ltYWdlLmNwcCAqLywKKwkJCQlBOEM5REQyNjBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2Uu
aCAqLywKIAkJCQlCMkQ4N0M2QjBCMTI0RTczMDBCMERFMUUgLyogU1ZHUGFpbnRTZXJ2ZXIuY3Bw
ICovLAogCQkJCUIyRDg3QzZDMEIxMjRFNzMwMEIwREUxRSAvKiBTVkdQYWludFNlcnZlci5oICov
LAogCQkJCUIyRDg3QzZEMEIxMjRFNzMwMEIwREUxRSAvKiBTVkdQYWludFNlcnZlckdyYWRpZW50
LmNwcCAqLywKQEAgLTEwODY3LDYgKzEwODczLDcgQEAKIAkJCQlCMkExMEI5MjBCMzgxOEJEMDAw
OTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OTk0MzI4MEI0MjMz
ODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFDRjdDNEUw
QjQyRUU2MDAwMDgwQkQ4IC8qIFNWR1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQThDOUREMjgwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0ltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTEyMTkzLDYgKzEyMjAwLDcgQEAKIAkJCQlCMjA4MEExMjBCM0NBM0I2MDAxMjA4NTIgLyog
SlNTVkdQb2ludExpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQy
MzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBQ0Y3
QzRGMEI0MkVFNjAwMDA4MEJEOCAvKiBTVkdQYXJzZXJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQThDOUREMjcwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0ltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTg0NDkpCisrKyBX
ZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICsz
NCwxMCBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKLSNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxvYWRlckZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBE
RkRvY3VtZW50SW1hZ2UuaCIKICNpbmNsdWRlICJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU1ZHSW1h
Z2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIHN0ZDo6bWF4OwpAQCAtMTQz
LDYgKzE0MywxMSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAg
ICAgICAgICAgbV9pbWFnZSA9IG5ldyBQREZEb2N1bWVudEltYWdlOwogICAgICAgICBlbHNlCiAj
ZW5kaWYKKyNpZiBTVkdfU1VQUE9SVAorICAgICAgICBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgp
ID09ICJpbWFnZS9zdmcreG1sIikKKyAgICAgICAgICAgIG1faW1hZ2UgPSBuZXcgU1ZHSW1hZ2Uo
dGhpcyk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBC
aXRtYXBJbWFnZSh0aGlzKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCShyZXZpc2lvbiAxODQ0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdpZHRo
KCkgY29uc3Q7CiAgICAgaW50IGhlaWdodCgpIGNvbnN0OwogCi0gICAgYm9vbCBzZXREYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBib29sIHNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0
ciwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgVmVj
dG9yPGNoYXI+JiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9kYXRhOyB9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlz
aW9uIDE4NDQ5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1MywxNiBAQCB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogfQog
Cit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBDb21wb3NpdGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIlBERkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9z
aXRlT3BlcmF0b3IpIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxl
LCBDb21wb3NpdGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBUaWxlUnVsZSwgVGlsZVJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKSBub3Qg
aW1wbGVtZW50ZWQiKTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ0cpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2
aXNpb24gMTg0NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9y
KSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1
bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcikgIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3Np
dGVPcGVyYXRvcik7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7
CiAgICAgICAgIGludCBwYWdlQ291bnQoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3ZnL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N2Zy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5v
cmcpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBTVkdfU1VQUE9SVAorCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNW
R0ltYWdlLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWVNYWMuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciogb2Jz
ZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fZG9jdW1lbnQoMCkKKyAgICAs
IG1fcGFnZSgwKQorICAgICwgbV9mcmFtZSgwKQorICAgICwgbV9mcmFtZVZpZXcoMCkKK3sKK30K
KworU1ZHSW1hZ2U6On5TVkdJbWFnZSgpCit7Cit9CisKK0ludFNpemUgU1ZHSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIEludFNpemUgZGVmYXVsdFNpemUoMzAwLCAxNTApOworICAgIC8vIEZJ
WE1FOiBFdmVudHVhbGx5IHdlJ2xsIGJlIHBhc3NlZCBpbiB0aGUgZGVzdCBzaXplCisgICAgSW50
U2l6ZSBkZXN0U2l6ZSA9IGRlZmF1bHRTaXplOworICAgIAorICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAKKyAg
ICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4o
bV9mcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplOworICAgIAorICAgIFNWR0xlbmd0aCB3aWR0
aCA9IHJvb3RFbGVtZW50LT53aWR0aCgpOworICAgIFNWR0xlbmd0aCBoZWlnaHQgPSByb290RWxl
bWVudC0+aGVpZ2h0KCk7CisgICAgCisgICAgSW50U2l6ZSBzdmdTaXplOworICAgIC8vIEZJWE1F
OiBXZSBoYXZlIG5vIHZpZXcgdG8gc2l6ZSBhZ2FpbnN0LCB0aHVzIHBlcmNlbnRhZ2VzIGFyZSBh
bHdheXMgMCwgaGVuY2Ugd2UgaGFjayBmb3Igbm93OgorICAgIGlmICh3aWR0aC51bml0VHlwZSgp
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICBzdmdTaXplLnNldFdpZHRoKGRlc3RT
aXplLndpZHRoKCkgKiB3aWR0aC52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSk7CisgICAgZWxzZQor
ICAgICAgICBzdmdTaXplLnNldFdpZHRoKHdpZHRoLnZhbHVlKCkpOworICAgIGlmIChoZWlnaHQu
dW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgc3ZnU2l6ZS5zZXRI
ZWlnaHQoZGVzdFNpemUuaGVpZ2h0KCkgKiBoZWlnaHQudmFsdWVJblNwZWNpZmllZFVuaXRzKCkp
OworICAgIGVsc2UKKyAgICAgICAgc3ZnU2l6ZS5zZXRIZWlnaHQoaGVpZ2h0LnZhbHVlKCkpOwor
ICAgIAorICAgIHJldHVybiBzdmdTaXplOworfQorCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQoreworICAgIGlm
ICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGNvbnRleHQtPnNhdmUoKTsK
KyAgICBjb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOworICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkueCgpLCBkc3RSZWN0LmxvY2F0aW9uKCku
eSgpKTsKKyAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpL3NyY1Jl
Y3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKS9zcmNSZWN0LmhlaWdodCgpKSk7CisgICAgbV9m
cmFtZS0+cGFpbnQoY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSk7CisgICAgY29u
dGV4dC0+cmVzdG9yZSgpOworfQorCit2b2lkIFNWR0ltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQ
b2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpCit7Cisg
ICAgZnByaW50ZihzdGRlcnIsICJTVkdJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBD
b21wb3NpdGVPcGVyYXRvcikgbm90IGltcGxlbWVudGVkIik7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6
OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBD
b21wb3NpdGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlNWR0ltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgVGlsZVJ1bGUsIFRpbGVSdWxlLCBDb21wb3NpdGVPcGVyYXRvcikgbm90IGltcGxlbWVudGVk
Iik7Cit9CisKK2NsYXNzIFNWR0VtcHR5Q3JvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdFbXB0eUNyb21lQ2xpZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHdpbmRvd1JlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAgIAorICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIGZsb2F0IHNjYWxlRmFjdG9yKCkgeyByZXR1cm4gMWY7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgZm9jdXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpIHsgfQor
ICAgIAorICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYWdlKiBjcmVhdGVNb2RhbERpYWxvZyhj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBz
aG93KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSB7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCB0
b29sYmFyc1Zpc2libGUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzdGF0dXNi
YXJWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnNW
aXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVu
dWJhclZpc2libGUoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIG1lbnViYXJWaXNpYmxlKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzaXphYmxlKGJv
b2wpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlSUQpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJhbWUp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgeyB9Cit9OworCitjbGFzcyBTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZy
YW1lTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50KCkgeyAgfQorICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgp
IHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfSAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRnJh
bWVWaWV3KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfSAvLyBkaXR0bworICAgIAorICAgIHZpcnR1
YWwgYm9vbCBoYXNCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZXNldEJhY2tGb3J3YXJkTGlzdCgpIHsgfQorICAgIAorICAgIHZpcnR1
YWwgYm9vbCBwcm92aXNpb25hbEl0ZW1Jc1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tUGFnZUNhY2hlKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUN1cnJlbnRJdGVtUGFn
ZUNhY2hlKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBtYWtl
RG9jdW1lbnRWaWV3KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihE
b2N1bWVudExvYWRlciopIHsgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RG9jdW1lbnRWaWV3RnJvbVBhZ2VDYWNoZShOU0RpY3Rpb25hcnkgKikgeyB9CisjZW5kaWYK
KyAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9y
Y2VMYXlvdXRGb3JOb25IVE1MKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhp
c3RvcnlGb3JDb21taXQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9y
eUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVI
aXN0b3J5Rm9yUmVsb2FkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpc3RvcnlGb3JT
dGFuZGFyZExvYWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvckludGVy
bmFsTG9hZCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5QWZ0ZXJD
bGllbnRSZWRpcmVjdCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb3BpZXNPblNj
cm9sbCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgTG9hZEVycm9yUmVzZXRUb2tlbiogdG9rZW5G
b3JMb2FkRXJyb3JSZXNldCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRB
ZnRlckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRvTm90UmVzZXRBZnRlckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKikgeyB9CisgICAg
CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDEoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hl
ZEZyb21QYXJlbnQzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDQo
KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGVkRnJvbVBhZ2VDYWNoZSgpIHsgfQor
ICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoUmVzb3Vy
Y2VIYW5kbGUqLCBOU1VSTFJlcXVlc3QgKiwgTlNVUkxSZXNwb25zZSAqKSB7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIGlkIGRpc3BhdGNoSWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgTlNVUkxSZXF1ZXN0ICpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlcios
IGlkIGlkZW50aWZpZXIsIE5TVVJMUmVxdWVzdCAqLCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJl
c3BvbnNlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgaWQgaWRlbnRpZmllciwg
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIGlk
IGlkZW50aWZpZXIsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgaWQg
aWRlbnRpZmllciwgTlNVUkxSZXNwb25zZSAqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIs
IGludCBsZW5ndGhSZWNlaXZlZCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgaWQgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIE5TVVJMUmVx
dWVzdCAqLCBOU1VSTFJlc3BvbnNlICosIGludCBsZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVu
dHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
YW5jZWxDbGllbnRSZWRpcmVjdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91Ymxl
IGZpcmVEYXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorI2VuZGlmCisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpcnN0TGF5b3V0KCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1
YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShOU1VSTFJlcXVlc3QgKikgeyByZXR1cm4gMDsg
fQorI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIHsgfQorICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxQb2xpY3lDaGVjaygpIHsgfQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CisjZW5kaWYKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIHsgfQorICAg
IAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJMb2FkaW5nRnJvbVBhZ2VDYWNoZShE
b2N1bWVudExvYWRlciopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmdGcm9tUGFnZUNh
Y2hlKERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCByZXZl
cnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyNpZiBQTEFURk9STShN
QUMpCisgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyVW5hcmNoaXZpbmdTdGF0ZShEb2N1bWVudExvYWRlciopIHsgfQorICAgIAorICAgIHZpcnR1
YWwgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3ND
b21wbGV0ZWQoKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lk
IGluY3JlbWVudFByb2dyZXNzKGlkIGlkZW50aWZpZXIsIE5TVVJMUmVzcG9uc2UgKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFByb2dyZXNzKGlkIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqLCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVByb2dyZXNzKGlkIGlkZW50
aWZpZXIpIHsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURv
Y3VtZW50UmVhZHkoYm9vbCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1
YWwgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQorI2VuZGlm
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIHsg
fQorICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorI2VuZGlmCisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBmaW5hbFNldHVwRm9yUmVwbGFjZShEb2N1bWVudExvYWRlciopIHsgfQorICAgIAor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9Cisg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KKyAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisgICAgCisgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2so
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKSB7IH0KKyAgICAKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgdmlydHVhbCBib29sIHdpbGxVc2VBcmNoaXZlKFJlc291cmNlTG9hZGVy
KiwgTlNVUkxSZXF1ZXN0ICosIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorI2VuZGlmCisgICAgdmlydHVhbCBib29sIGlzQXJjaGl2ZUxvYWRQZW5kaW5n
KFJlc291cmNlTG9hZGVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUGVuZGluZ0FyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNsZWFyQXJjaGl2ZWRSZXNvdXJjZXMoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZ2VuZXJhdGVkTUlN
RVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0IHsgcmV0dXJu
ICIiOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFn
bWVudFNjcm9sbCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSB7IH0KKyAg
ICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IHsgcmV0dXJuIG5ldyBEb2N1bWVudExvYWRlcihyZXF1ZXN0KTsgfQorI2VuZGlmCisgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKSB7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoKSB7IHJldHVybiAiIjsgfQorfTsK
KworYm9vbCBTVkdJbWFnZTo6c2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBp
bnQgbGVuZ3RoID0gZGF0YUJ1ZmZlcigpLnNpemUoKTsKKyAgICBpZiAoIWxlbmd0aCkgLy8gaWYg
dGhpcyB3YXMgYW4gZW1wdHkgaW1hZ2UKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAg
aWYgKGFsbERhdGFSZWNlaXZlZCkgeworICAgICAgICBtX3BhZ2UgPSBuZXcgUGFnZShuZXcgU1ZH
RW1wdHlDcm9tZUNsaWVudCwwLDApOworICAgICAgICBtX2ZyYW1lID0gbmV3IEZyYW1lTWFjKG1f
cGFnZSwgMCwgbmV3IFNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQpOworICAgICAgICBtX2ZyYW1l
VmlldyA9IG5ldyBGcmFtZVZpZXcobV9mcmFtZS5nZXQoKSk7CisgICAgICAgIG1fZnJhbWUtPnNl
dFZpZXcobV9mcmFtZVZpZXcuZ2V0KCkpOworICAgICAgICBtX2ZyYW1lLT5zZXRTZXR0aW5ncyhu
ZXcgU2V0dGluZ3MpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0UmVzcG9uc2VNSU1F
VHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+YmVnaW4o
InBsYWNlaG9sZGVyLnN2ZyIpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+d3JpdGUoZGF0
YUJ1ZmZlcigpLmRhdGEoKSwgZGF0YUJ1ZmZlcigpLnNpemUoKSk7CisgICAgICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5lbmQoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fZnJhbWVWaWV3OworfQorCit9
CisKKyNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N2Zy9TVkdJbWFnZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFNWR0ltYWdlX0gKKyNkZWZpbmUgU1ZHSW1hZ2VfSAorCisjaWZkZWYgU1ZHX1NVUFBP
UlQKKworI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgU1ZHRG9jdW1lbnQ7CisgICAgY2xhc3MgRnJh
bWU7CisgICAgY2xhc3MgRnJhbWVWaWV3OworICAgIGNsYXNzIFBhZ2U7CisgICAgCisgICAgY2xh
c3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHSW1h
Z2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciopOworICAgICAgICB+U1ZHSW1hZ2UoKTsKKyAgICAg
ICAgCisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgICAgIAorICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAg
IAorICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpIHsg
cmV0dXJuIDA7IH0KKyAgICAgICAgCitwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgICAgIAorICAgICAgICBTVkdEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICAgICAgUGFnZSog
bV9wYWdlOworICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CisgICAgICAgIFJlZlB0cjxG
cmFtZVZpZXc+IG1fZnJhbWVWaWV3OworICAgICAgICBJbnRTaXplIG1fbWluU2l6ZTsKKyAgICB9
OworfQorCisjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKKworI2VuZGlmCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVjdGVkLnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVj
dGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0KCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFKWUNBWUFBQUNhZG9K
d0FBQWdBRWxFUVZSNG5PM2RlWkNjZFozNDhjOGN5Y3prClBrZ0NTRWdDeVJvdWtac05LQWJ4d0Uy
VUNpSUlVb0xMb2JKdUtSc3RjUldVUlJEbGlQc3Jyc2lDRmd0TEFtVmtjVG5rRW93Z2lFRTIKUUpB
a2dCSWc5eldUdVRMSDc0OXNocHd6a3pENWRNL3dlbFhsajh3ejNmM3Q3L04wMHUvdTV5aHBiVzF0
RFFBQWdBU2xoUjRBQUFEdwozaUZBQUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVnalFBQUFnRFFD
QkFBQVNGTmU2QUVBOUdRL2VtNTVvWWZBSnI1OXlHNkZIZ0xBCmU1NXZRQUFBZ0RRQ0JBQUFTQ05B
QUFDQU5BSUVBQUJJSTBBQUFJQTBBZ1FBQUVqak5Md0FSUDM2a3FodUtJdlZ0V1d4cXJZc1Z0V1cK
eDVxNjBxaHBLSXVHcHBLMjM2c29iNDErRmMweHNLb2xCdmRwaXNGOW1tTlFuK1lZMHFjNXlrcGJD
L2dNQU9ndUJBakFlMUIxZlZrcwpYbHNlQzVaVnhPc3JlbmY2ZGcxTkpkSFFWQjRyMWtWRWJIMjcw
VU1iWSt5d2h0aDlRRlAwcjJ6dXVnRUQwR01JRUlEM2lPcjZzcGkvCnJIYzgvVnJmWGZZWXI2L292
Vm5RSERWbVhZd2IxaWhHQUdnalFBQjZ1TmRYOUk3Zkwrd2JhK3ZMMGgvNzZkZjZ4dE92OVkwQmxj
MXgKekw3cll2VFF4dlF4QUZCY0JBaEFEOVRjVWhKL1dWSVJqOC92VitpaFJFVEUydnF5dVAvRkFS
RVJjZHk0bW5qL2lBYkhqQUM4UndrUQpnQjVtL3RLS2VQamwvb1VleG5ZOVByOWZQRDYvWDV3d3Zq
ckdEVzhvOUhBQVNDWkFBSHFJWlRYbGNlLy9EdHpzckZYRjdPR1grOGZ2CkZ2U0x5UjlZRThQNk5S
VjZPQUFrY1IwUWdHNnV1YVVrbm55MWI5dzlaMUMzaVkrTkdwcEs0dTQ1ZytMSlYzZmRnZkVBRkJm
ZmdBQjAKWXl0cnkyTEdzNE1MUFl4MzdmbEZWZkg4b3FvNDlmQlZNYVNQTTJZQjlHUytBUUhvcHVZ
dnJlZ1I4YkdwR2M4T2p2bExLd285REFCMgpJUUVDMEEwOStXcmZvajdRL04xNCtPWCtkc2tDNk1F
RUNFQTM4K0JMQStMNVJWV0ZIc1l1OWZ5aXFyYlQ5Z0xRc3dnUWdHNml1YVVrCmZ2WDh3SGgxZWUr
T2Y3a0hlSDFGNy9qVjh3T2p1YVY3SFZnUFFQc0VDRUEzY2UvY0FmSDJtbDZGSGthcXQ5ZjBpbnZu
RGhBaEFEMkkKQUFIb0J1NS84YjBYSHh1OXZhWlgvR1plenp6ZUJlQzlTSUFBRkxrblgrMGJyNjk0
Yit4MnRUMnZyK2p0d0hTQUhrS0FBQlN4K1VzcgpldndCNTUzMS9LSXFwK2dGNkFFRUNFQ1JXbGxi
MW1OUHRidXpIbjY1ZjZ5c0xTdjBNQUI0RndRSVFCRnFiaW5wY1JjWjdDcm1CYUI3CkV5QUFSZWpw
MS9zVWVnaEZ6ZkVnQU4yWEFBRW9Nc3RxeWgzMzBZSG5GMVhGc3ByeVFnOERnSjBnUUFDS3pMMy9P
N0RRUStnV3pCTkEKOXlSQUFJckkvS1VWMGREa29udWQwZEJVNHF4WUFOMlFBQUVvRXMwdEpjNTZ0
WU1lZnJtL3E2UURkRE1DQktCSS9HV0pUL04zaG5rRAo2RjRFQ0VDUmVIeCt2MElQb1ZzeWJ3RGRp
d0FCS0FLdnIraGQ2Q0YwYStZUG9Qc1FJQUJGNFBjTFhkZmkzVEIvQU4ySEFBRW9zT3I2CnNsaGJY
MWJvWVhScmErdkxvdG9jQW5RTEFnU2d3T1l2cy90UVZ6Q1BBTjJEQUFFb3NLZGZzL3RRVnpDUEFO
MkRBQUVvSUxzTmRTM3oKQ1ZEOEJBaEFBUzFlVzE3b0lmUW81aE9nK0FrUWdBSmFzTXhGOUxxUytR
UW9mZ0lFb0lCY3Y2SnJtVStBNGlkQUFBcWtmbjFKb1lmUQpJNWxYZ09JbVFBQUtwTHJCQWRPN2du
a0ZLRzRDQktCQVZ0ZDZvN3dybUZlQTRpWkFBQXBrbFRmS3U0UjVCU2h1QWdTZ1FGYXNjOHJZClhX
RlZyWGtGS0dZQ0JLQkFxdXY5RTd3cnJLa3pyd0RGekwvU0FBVlM0MkRwWGNLOEFoUTNBUUpRSUEx
TlRoZTdLNWhYZ09JbVFBQUEKZ0RRQ0JBQUFTQ05BQUFxa29yeTEwRVBva2N3clFIRVRJQUFGMHEr
aXVkQkQ2SkhNSzBCeEV5QUFCVEt3cXFYUVEraVIrbGVhVjRCaQpKa0FBQ21Sd242WkNENkZIR3Ry
WHZBSVVNd0VDVUNDRCs5aFZhRmN3cndERlRZQUFGTWdnYjVSM0NmTUtVTndFQ0VDQkRQRkdlWmZv
Cjd5QjBnS0ltUUFBS3BLelU2V0ozaGNwZTVoV2dtQWtRZ0FJYVBiU3gwRVBvVWN3blFQRVRJQUFG
TkhaWVE2R0gwS09ZVDREaUowQUEKQ21qM0FVNFoyNVhNSjBEeEV5QUFCZFMvMGdIVFhjbDhBaFEv
QVFKUVlFZU5XVmZvSWZRSTVoR2dleEFnQUFVMmJwZ0RwN3VDZVFUbwpIZ1FJUUlIMXIyeU9BWFlk
ZWxjR1ZEYmIvUXFnbXhBZ0FFWGdtSDN0UHZSdW1EK0E3a09BQUJTQmtZUFhGM29JM1pyNUErZytC
QWhBCkVTZ3JiWTNqeHRVVWVoamQwbkhqYWx4VkhxQWJFU0FBUmVMOUkxeEViMmVZTjREdVJZQUFG
SW15MHRZNFlYeDFvWWZSclp3d3Z0cTMKSHdEZGpBQUJLQ0xqaGpkRVJiazMxSjFSVWQ0YTQ0Yjc5
Z09ndXhFZ0FFVm04Z2ZXRkhvSTNZSjVBdWllQkFoQWtSbldyeWtPM3F1dQowTU1vYWdmdlZSZkQr
alVWZWhnQTdBUUJBbENFamhwZFcrZ2hGRFh6QTlCOUNSQ0FJbFJXMmhxbkhyNnEwTU1vU3FjZXZz
cUI1d0RkCm1BQUJLRkpEK2pRN0s5WVdUaGhmSFVQNk5CZDZHQUM4Q3dJRW9JaU5HOTdnZUpEL2Mv
QmVkYzU2QmRBRENCQ0FJamRobjNVeGVtaGoKb1lkUlVHTjJhNHdKKzZ3cjlEQUE2QUlDQktBYk9Q
R0F0YkhId1BXRkhrWkI3REZ3Zlh6TXJtZ0FQWVlBQWVnbUpoLzAzb3VRUFFhdQpqNU1PWHVPZ2M0
QWVSSUFBZEJObHBhMXgwc0ZyM2pPN1k0M1pyVEVtSDdTMjBNTUFvSXNKRUlCdTVzUUQxdmI0QTlN
UDNxc3VQcm4vCld0OThBUFJBQWdTZ0c1cXd6N29lZTRyZUU4WlhPK0Fjb0FjVElBRGQxTGpoRFQz
dVlvV25IcjdLcVhZQmVyanlRZzhBZ0owM3BFOXoKZk9YRHkrUEpWL3ZHODR1cUNqMmNuWGJ3WG5W
eDFPaGF1MXdCdkFjSUVJQWVZTUkrNjJMYzhJYTQ5MzhIUmtOVFNhR0gwMmtWNWEweAorUU5yWWxp
L3BrSVBCWUFrZHNIYUJaWXVYUnFQUHZwb3JGeTVzc3Z2dTY2RDQwNDdXdDRaMWRVUmYvaEQ4MWIz
dFdwVmF6UjE4WHVFCjl1WnF4WW9WTVgvKy9KMis3K2JtNW5qNTVaZmZ6ZkRldFVXTEZoWDA4YmRV
VTFNVGI3enhScUdIRVJIRk56YzdvaGkyclcwWjFxOHAKdmpSaFJiYzVOdVNFOGRYeHBRa3J4QWZB
ZTB5SEFUSno1c3pZYjcvOW9xU2tKQ1pPbkJnUFAveHd4cmk2cmVuVHA4ZWRkOTRaanovKwplQnh3
d0FIUjBOQTErekl2WHR3YVgvOTZYVXlhVkxORHk5ZXZqeGcrZkUyVWxLemE3RTlwNmVwNCsrM05k
M1Y0NmFXV09QbmtkWEhyCnJRMng5OTZsVWZWL2UzUE1uOThTbi92Y3Vyajc3dlh4M2UvV3hTV1gx
SGQ2M1BmZmYzK2NjTUlKVVZKU0VtUEhqbzBiYnJpaGJWbEgKYzNYeHhSZkhTU2VkMU9uSDJ0UWYv
L2pIK09BSFB4am5uWGZlVHQyK0s4eWJOeThPUFBEQWdqMytsdTY0NDQ0WU1XSkUzSGJiYllVZQpT
dEhOelk0b2htMnJJK09HTjhSNXg2Nkk0OFp0KzkrTFFqdHVYRTE4NWNQTEhlc0I4QjdWNFM1WW4v
dmM1Mkxod29YeG5lOThKeTY2CjZLSTQ0WVFUTXNhMXd4b2FHdUxKSjUrTWlSTW43dFR5cm5pTWRl
dld4WVVYWGhocjE2Nk4wdExTK01RblBoRVZGUlU3L1hnYlZWZEgKdlBKS2N6ei9mSE0wTkd5OWYz
Ujd5Kys2cXpHKzlyV0srT1FuZThYR29iejRZa3RjZTIxOTdMSEhPN3RwL094bmpYSFpaWFh4MkdQ
OQpZNTk5U2plNzc4bVRhK0xLSzZ2aU01L3BGUkVSeHh4VEhlOTdYMm1jZDE3dkRzZCs0b2tuUmxW
VlZUenl5Q1B4aFM5OEliN3lsYTlFClJPZm02dEpMTDkzc201RWRXWWRISEhGRWZPUWpING1YWG5x
cHc5L2RWWVlNR1JLREJ3OXUrM3RYYklQdnh1bW5ueDZYWFhaWlFSNTcKUzF2T1RYZFNETnRXWjVT
VnRzYitlOVRIL252VXgrc3Jlc2Z2Ri9hTnRmVmxCUnZQZ01ybU9HYmZkVEZ5OEhySGVRQzh4M1Zx
RjZ4Qgpnd1pGUk1UQWdRTTdkYWROWGIyZlRnZldyMThmWjU1NVp2enVkNy9icWVYYjA5cjZ6bitT
bmJtUHVYUG5SbU5qWTVTV2JwaldDUk1tCjdORGpiVS8vL2hFZi9uQjVqQjlmR2lYYjJMVzd2ZVhI
SGxzZTMvdGVaUnh4UkZsODRBTWIvcnp5U25OYlRFUkV6SjdkRkJkY1VCc3oKWnZUYkxENGlJbTYv
dlRHV0wyK055WlBmK2Yyeno2NklTeSt0aStibXpvMS80eHZOVGQ5d2RtYXVoZzRkR3VQR2pZdUlI
VnVITFMwdApFUkZSWGw3ZWR2OWRaZE50b2lNalJveUk4ZVBIUjhUT2I0T2QwZDdyYmN2eDl1clZL
MHEydFJFbDIzUnV1dEtPckorZHNTdTNyVjFwCjlOREdPT1BJVmZHRkkxZkZVV055VDI5NzFKaDE4
WVVqVjhVWlI2NkswVU1ieFFjQVhYc1EraU9QUEJMUFB2dHNsSlNVeEQzMzNCTTMKM1hSVEhIamdn
WEhISFhmRUQzLzR3eGc5ZW5SY2ZmWFZNWDc4K0pnN2QyNmNkOTU1Y2ZubGw4ZkVpUk9qcHFZbXZ2
M3RiMGRGUlVVcwpYTGd3OXQ1Nzc3anl5aXVqcXFvcVpzeVlFUmRlZUdGOCs5dmZqcTk5N1d0eDU1
MTN4aVdYWEJJVEowNk1HMis4TWFaTm14Yi8vZC8vCkhRc1dMSWlGQ3hmRzlkZGZIMzM3OW0wYjE3
YVcxOVRVeEpWWFhobC8rdE9mb3FhbUpxNjc3cm80K3Vpakl5Sml4b3dac1hMbHlsaTcKZG0zY2M4
ODk4ZVNUVDNiNEdEZmZmSFBjZmZmZDBkVFVGQmRjY0VGVVZWWEZWVmRkMWU3em1qTm5UdHgwMDAw
eGJOaXdxS3FxaW1uVApwc1gvL00vL3hKRkhIdGxsNjJUdnZiZCtrelJyMXZxNC9mWjN4djc1ejYr
TEk0OHNpNmFtMXZoLy82OGhEamlnTEk0L2ZzT21jZi85CjYyUGN1TkxZOUwzV3VIR2w4ZWFiTGZI
Y2M4MXgrT0U3L29ucTl1WnFVMisvL1hiY2R0dHRNV3ZXckhqcXFhYzZuUCtJaU5yYTJwZzYKZFdy
c3Z2dnU4ZFpiYjhXTEw3NFlsWldWYmN2Yld4Y1JFVXVXTE5taGJlS3h4eDZMbTI2NktmYmFhNi9Z
YjcvOTR2TExMNDlldlhyRgovZmZmSDJQR2pJbUlpT09PT3k0aXRyME5iam4rdXJxNnVPeXl5MkxB
Z0FFeFo4NmNPT0tJSTJMcTFLbmIzVTZxcTZ1MytYcmIzbmczCmFtbHBpWXN2dmpoKy92T2Z4NEFC
QStMZWUrOXRHMjk3ZnZuTFg4YjU1NThmeHg1N2JOeDY2NjN4cTEvOUtyNzV6Vy9HQnovNHdiamgK
aGh0aTdOaXhjYzAxMThTc1diUGlvWWNlaXNyS3luYm5kT1BjYk8vNWpSbzFhcnUzM1ZKdGJXMTg2
MXZmaXVIRGg4ZnMyYk5qeUpBaApjY2doaDhTRUNSUGlReC82VUlmcnZxUGxIVzFiM1VYL3l1WTRk
R1JkSERxeUxxcnJ5Mkx4MnZKWXNLd2lYbC9SOGJlWm5UVjZhR09NCkhkWVF1dzlvaXY2Vm5meVVB
b0QzbEM0TGtNYkd4dmppRjc4WXQ5MTJXMHljT0RIcTZ1cmkrOS8vZnR4OTk5MXgrdW1ueDAwMzNS
U04KalkxdG4zcnV2Ly8rOGI3M3ZhOXRkNVIvK0lkL2lIUE9PU2ZPUFBQTVdMOStmUng3N0xIeHVj
OTlMdTY5OTk0NDlkUlQ0MS8rNVYraQp1bnJEZ1pXbm5YWmEzSHJyclcyNzUzenptOStNNjYrL1Br
NDU1WlM0NktLTHRocmJsc3VibTV2amxGTk9pUmt6WmtUZnZuM2pxMS85CmFuejYwNStPVjE1NUpm
cjE2eGRYWFhWVi9QR1BmNHlJRFc5S1cxcGFPbnlNYzg0NUp3WU9IQmdQUGZSUVhIZmRkVzAvYis5
NU5UWTIKeGwxMzNSV2pSbzJLNzM3M3UzSHl5U2Z2OHQxU1huMjFKZGF0YTQwRER0aFFGSys5MWhL
TEZyWEVxRkdsOGVLTExmSEdHeTB4ZFdwZApmUG5MRmZIVG4xYkYyMiszeEpBaG0zOWkzci8vaHI4
dld0U3lVd0d5dmJuYVZIbDVlYnoyMm11eFlNR0NpT2g0SFVkczJGM3d6RFBQCmpGTlBQVFZhV2xw
aTVNaVJjY0FCQjdRdGIyOWRORGMzeDlsbm43MUQyOFQrKys4Znp6MzNYRHovL1BQeGtZOThKQjU5
OU5INHhDYysKRVZkY2NVVk1uejY5N2JsMmR2eFRwa3lKU3k2NUpJNCsrdWo0MDUvK0ZJY2Zmbmdj
Zi96eDI5eE8rdmJ0RzFPbVRObm02NjJwcVdtYgo0OTM0aWYxZGQ5MFZWMTk5ZFp4MzNubnhzWTk5
TEM2Ly9QTDQyYzkrMXVGNm16SmxTdnp3aHorTUlVT0d4S0JCZytLc3M4NktYL3ppCkZ6Rnk1TWdZ
TzNac1JFU01IejgrL3ZFZi96RXFLeXZibmROQmd3YTF6YzIybnQrQUFRUGF2ZTJXYnJubGxxaXNy
SXlMTDc0NFhuamgKaFRqb29JUGkwRU1QamIzMzNydkRkZCtaNVIxdFc5MVIvOHJtNkYvWjNIWWNS
bk5MU2F5c0xZdlZ0V1d4cXJZc1Z0V1d4NXE2MHFocApLTnZzckZvVjVhM1JyNkk1QmxTMXhKQStU
VEc0VDNNTTZ0TWMvU3VhbzdLWGJ6Y0E2RmlYQlVpdlhyMWl5cFFwY2ZEQkIwZkVodDFuCjVzMmIx
N2I4RzkvNFJreVpNaVZlZSsyMUdETm1UTXllUFR0T1BQSEVpSWg0NElFSFl2YnMyVzBIdVBmcTFT
dSs5S1V2eFplLy9PVjQKNnFtbjR1Ly8vdStqcXFwcXMxMUgrdlRwczlXdUpCM3RXckp4K2N5Wk02
TzF0YlZ0ZDVnOTl0Z2psaTFiRms4ODhVUk1tREFoL3Z6bgpQOGQ5OTkwWG4vclVwK0xjYzgvZGJM
ZU9IZGw5cFRQUGEvejQ4VEY2OU9nNCtlU1Q0K1NUVCs3MGZlK3NXYlBXYjdiNzFaLyt0T0VUCnlt
dXY3Uk5ISExFaEp2cjJMWWtmL0tBK3pqMjNJdXJxV3FOWHI4Mi9SZW5kZThNY3JGKy82OFk1Yk5p
d09PaWdnK0t1dSs3YTdPZmIKbS84Ly9PRVBjZDk5OThWLy91ZC9Sa1JFYVdscGZPcFRuNHEvL3ZX
dkVkSHh1bmo5OWRkM2VKc1lNV0pFN0x2dnZ0R3ZYNytZTkdsUwpSRVFjZi96eDhlS0xMN2FOYTdm
ZGR1dlUrQjk5OU5GNDdybm40cWlqam9xSWlNTU9PeXh1dlBIR0dEVnFWQXdkT25TcjdhUzF0WFc3
CnI3ZlZxMWUzdXcxUG1qUXBQdnJSajBaRXhNU0pFMlB1M0xudHJvdE5uWDMyMmZHakgvMm9MV2hP
T09HRW1EWnRXalExTlVWNWVYazgKL1BERDhXLy85bThSMGY3cjdOT2YvblRiM0J4OTlORmJQYi8v
K3EvL2F2ZTJXN3J0dHR2YVRsaHc0SUVIeHJCaHd5SWlZdFNvVVIydQorelZyMXJTN3ZLU2twTjF0
cTZjb0syMk5ZZjJhbkpFS2dGMnV5M1ppTGlrcGlYLy85MytQMWF0WHg1VlhYaG1QUC81NDJ6Y1dF
UkdUCkowK09rU05IdG4weS9PdGYvN3J0RGZjenp6d1R3NFlOaTE2OTNubGp2SEUzcE9lZWUyNkh4
dENaNVU4OTlWUU1IVG8wZXZmdUhiMTcKOTQ1ampqa21IbnJvb1Rqc3NNTml0OTEyaXlsVHBzVGt5
WlBqZ2dzdWlOR2pSMGRaV2RsVzk5RVpuWGxlVlZWVmJXK1dNc3lhMVJnbgpuZlRPZUZhdTNQREdk
T3pZZHphRlUwN3BIYTJ0cmZIMDAwMngrKzZsc1hKbHkyYjNzVzdkaHR1TUc3ZHI5NEV2S1NucGRH
VCs5cmUvCmpmSGp4Mi8yNlhpL2Z2M2FmcitqZGJHejI4U1dZK3pmdjMvVTEyLy9MR0hiRy8vRzBO
bDArZm5ubng5RGh3Nk5pSzIzay9aZWJ6dXkKRFE4ZVBEaHFhanAvcHFUUGYvN3pzV3pac3JZd2VP
R0ZGMkxkdW5YeHlDT1BSSDE5ZmJTMHRMVHRXdGJlbkc1cHkrZTNJN2VOMkREdgpUejMxVk52ZmQ5
OTk5N2FZNjJqZGQ3UzhvMjBMQU5neFhYb015RTAzM1JTelo4K09XMjY1Slc2KytlWjQ1cGxuMnBh
VmxaWEZWNzd5CmxaZzJiVnI4NEFjL2lMcTZ1cmIvMEd0cmEyUDU4dVZSVTFNVC9mcjFpNGlJZ3c0
NktNckx5MlBkdXE0L1lITDU4dVZSWGw2KzNUTjYKM1hISEhiSG5ubnZHVDMvNjA1Z3paMDQ4K09D
RE1XREFnQjErbk96bjFaRWxTMXBqNGNLV21ERGhuZFUrWnN5R2lGaTBxQ1VHRDk3dwpKblhzMk5J
b0t5dUptcHJXMkd1djBwZzllL05QUkd0cU5nWkk0YzZvczZWRml4YkY4dVhMdC9yNXhqZUpIYTJM
ckcxaWU1WXNXUkl2CnZQRENEdDJtdmRmYnJocnYwS0ZEWTlLa1NYSDc3YmZIb0VHRDR2RERENC9T
MHRLNDg4NDdZODJhTlp1ZE5ybWpPVzNQanQ3Mkc5LzQKUnB4MTFsa3hkKzdjcUtpb2lENTkrclFk
WTlMUnV1OW9lVWZiRmdDd1k5NzFSOWh2dnZsbTNITExMZkhTU3kvRlY3LzYxYmpxcXFzMgoreVJ4
VStlY2MwNnNYcjA2dnZPZDc4U0hQdlNodHArUEh6OCttcHViMi9aWmo5aHdnYnFtcHFiWWI3Lzky
bjYyOFF3MDI5UFpiMERHCmpCa1REejMwMEdhZlZMZTJ0c1p2Zi92YldMeDRjU3hkdWpTdXZmYmFl
T0NCQjJMdTNMbHg1NTEzZHZveE50WFo1NVhsbm52V3g2YysKMVd1ekE4b1BQYlFzK3ZZdGFkc1ZL
eUtpdXJvMW1wdGJZLy85eStLa2szckY0c1V0bTUzeDZpOS9hWTRERHl5TExZNmhUckc5K2Q5egp6
ejFqMmJKbDhjb3JyMnh6ZVVmcjR0MXNFMTB4L2xHalJzWDgrZk5qNGNLRm16Mys5cjRCYk8vMTFw
WGozWmF6empvcjdycnJydmpaCnozNFc1NXh6VHB4OTl0a3hhOWFzZVBqaGg5dmU5RWUwL3pycnlJ
N2VkdU91Wmc4ODhFQTgrK3l6OGRoamo3VXQ2MmpkZDdTOG8yMEwKQU5neG5RcVFWYXRXUmNUV0Fk
RFEwQkRublhkZUhITElJVEZ2M3J4b2FXbUpsMTU2S1pxYm0rUHh4eCtQK3ZyNmFHMXRiZHYvZkxm
ZApkb3ZUVGpzdHBrK2ZIcE1uVDI2N24xTk9PU1gyMm11dmVPaWhoOXArOXV5eno4YjQ4ZVBqazUv
OFpFUnMrRVR5NmFlZmpzYkd4bmpyCnJiZGk0Y0tGc1dMRmlyYmZIelJvVU51VmxUZU9kMU9iTHA4
MGFWSXNXYklremovLy9GaTFhbFVzWGJvMExyMzAwaGczYmx5c1dMRWkKWnN5WUVSRVJILy80eCtN
em4vbE0yNmVpSFQzRzJyVnJvNldsSldwcmF6djl2SnFhbXFLdWs1Y3ZiMmlJYUsvQk9scit5MTl1
dnZ0VgpSTVRRb1NYeDlhOVh4bTkrODg0QkhVOC8zUndISEZBV0gvMW9lVXlhMUN1R0R5K05tVFBm
V2Y3WVkwM3gwNS8yMmVSeEcrTHl5eS9mCjdwV3RONTRzWU5OcmVtdzVWOXRTVzFzYmRYVjFiZHRQ
ZS9OLzZxbW5Sbmw1ZWR4NDQ0MXRQM3Y1NVpkaitmTGxiU2NkYUc5ZG5ISEcKR1R1MVRUUTJObTcy
dXFpdHJZM203WnlmdUtQeFYxWld4dGxubngzejVzMkxlZlBteGJlKzlhMFlPWEprUkd5OW5iVDNl
bHUrZlBsMgp4MXRiVzd2Wm5OZlYxVzEydjlYVjFmRzk3MzB2NXN5WnM1MjFzdUhhTGhVVkZWRldW
aFlEQnc2TTQ0OC9QZ1lNR0JCNzdMSEhab0hWCjNweHVhY3ZudHlPM2pZajR3UTkrRUgvM2QzOFgv
L3pQL3h5bm4zNTYyOW1ySWpwK0hYYTB2S050SzZMajF3QUE4STZ5NzMvLys5OXYKN3hmdXZ2dnVt
RFp0V2l4ZnZqeisvT2MveCs5Ly8vdVlNV05HM0h6enpURjE2dFI0KysyMzQrcXJyNDdSbzBmSGZm
ZmRGOWRkZDEwcwpYTGd3UHYvNXo4ZnR0OThlTDcvOGNreWFOS2x0SC9RaFE0WkVkWFYxbkhiYWFX
MlAwYnQzNzVnNGNXSmNjY1VWVVZkWEYydldySW5iCmI3ODlicmpoaGhnK2ZIaEViRGdvK1pwcnJv
bWJiNzQ1MXE1ZEd5TkdqSWlWSzFmR3lKRWpZOHlZTWZIR0cyL0VOZGRjRTMvNzI5OWkKNHNTSlc1
M2lkTlBscDV4eVN1eXp6ejV4OWRWWHh4VlhYQkUvLy9uUDQ5eHp6NDBqanp3eWxpMWJGaGRlZUdG
VVZsYkdtMisrR1crKworV1pNblRvMVNrdEwyMzJNcDU5K09uN3lrNS9FMy83MnQyaHNiSXl4WThm
R2lCRWoybjFlZDl4eFIweWZQajMrK3RlL3RudFduWWFHCmlEdnZiSXdiYjJ5SVYxOXRpVEZqU21Q
a3lOS29xaXJwMVBLSWlEVnJXdU5iMzZxUDY2L3ZFK1ZiN0hoMzNISGw4Y3d6emZHYjN6VEYKYzgr
MXhDOSswUmgzM05FM2hnNHRpZExTaUU5L3VsZGNlV1Y5TEZuU0dzOC8zeExEaDVmR0dXZThjOXJP
K2ZQbngyYy8rOWs0K09DRAoydzZLM3VqQkJ4K01ILy80eC9IcXE2L0dXMis5RlJVVkZkSFUxTFRW
WEcxNTlxOW5ubmttcnIzMjJuajExVmRqMEtCQmNlaWhoOFpiCmI3MjEzZmtmTW1SSWpCMDdOaTY5
OU5LNDdiYmI0b2tubm9pV2xwWm9iR3lNUG4zNnhHR0hIZGJ1dWhnMmJGaU1HREZpaDdhSjJiTm4K
eHpYWFhCT0xGeStPWTQ0NUpsYXNXQkdYWDM1NUxGaXdJSTQ2NnFqWWQ5OTl0N3NOYmpuK3dZTUh4
NEVISGhpMzNucHIvT1FuUDRsZgovL3JYOGEvLytxOHhmdno0Ylc0bjdiM2Vqajc2NkpnNmRlcFc0
NTAxYTFaTW56NDlWcTllSGNjY2MweTgvZmJiOGVNZi96Z1dMRmdRCmh4eHlTTHovL2UrUGVmUG14
WmxubmhsejVzeUpjODg5ZDV2YlkybHBhU3hac2lRdXVPQ0NHREprU0pTVWxNU3FWYXZpaTEvOFln
d1oKTXFUdDk5cWIwMDF0Ni9sMTlyWWIzWFBQUFhIUlJSZkZaWmRkRnBkZGRsbGNmLzMxOGRwcnI4
WEhQdmF4cUtxcWFuZmRkL1R2VDBmYgoxa0VISGRUdWEyRDI0dTFITnZtTzNhTlB4NzhFd0M1VjB0
ckZWKzZxcTZ0cisvUngvZnIxVyswZU1uMzY5Qmc5ZW5SOC9PTWYzK3EyCnJhMnRzV0RCZ2lndExk
M3F6VnZFaGsrYm01dWJvNnFxYXB2M3ZYejU4cTNPT3RUZThzYkd4bmpqalRkaTFLaFJVZjUvNzhv
M250MW4KOWVyVjBhdFhyNjFDcHFQSDJKYU9ubGVHK3ZxSXBVdGJ0bmxka0UxL1ovWHExdGg5OTIz
dkpyUnlaV3NNSGx5eXpZc2hMbHUyTE9WZworbzdtdjdtNU9WYXRXaFc3N2JaYjFOZlhiM1d0aHM1
c1l6dTZUWFRsK0Z0YlcyUHAwcVV4WXNTSVR0M2Z0bDV2NzNhOGE5YXNpV25UCnBzVWxsMXl5M2Q5
cGFHalk3TXIxVy81OVU5dWEwODdxN0cydnVPS0srT3huUHh2MTlmVlJYVjBkcTFldmpwa3paOFlY
dnZDRnR1TkkKT2xyM0hTM3ZhTnZLZWcwQVFIZlg1UUd5UGRYVjFWRlJVUkZubkhGR3pKdzUwd0dj
blZSU3N2V3VYc1drdFhYWFhyZUVmTGZjY2tzYwplZVNSYlJjMUxIYlRwMCtQbVRObnRwMUdkNk1I
SDN3dzl0MTMzN1pybEFBQXhTRWxRSzYvL3ZyNHAzLzZwM2pmKzk0WC8vRWYvN0hOCmJ6K0E0ckJx
MWFwZGZrSE1yalIzN3R3NDRvZ2pZdkxreVhIWVlZZEZYVjFkTEZteUpDWk5tdFIyZlJZQW9IaWtC
TWpLbFN0anhvd1oKOFpuUGZDYjIzSFBQWGYxd3dIdk1talZyNG9rbm5vakZpeGZIeElrVGZlc0JB
RVVzYlJjc0FBQ0FYWHNwYXdBQWdFMElFQUFBSUkwQQpBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFB
Q0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBCkFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFMKQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUQpBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBCklJ
MEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ04KQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQgpBQURTQ0JBQUFDQ05BQUVBQU5J
SUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFB
CjBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQQpBQ0NOQUFFQUFOSUlFQUFB
SUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FB
QUFnCmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQUlJMEEKQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFB
UUFBMGdnUUFBQWdqUUFCQUFEU0NETU1FeG9BQUFlclNVUkJWQkFBQUNDTkFBRUFBTklJRUFBQUlJ
MEFBUUFBCjBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFB
QWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NC
QUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQQpBQ0NOQUFFQUFO
SUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFB
QTBnZ1FBQUFnCmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFB
QkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEEKQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQQpBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dR
QUFBZ2pRQUJBQURTCkNCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURT
Q0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1EKQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQQpJSTBB
QVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdq
UUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFB
Q0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFEU0NCQUFBQ0NOQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQQow
Z2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEKQUNDTkFBRUFBTklJRUFBQUlJ
MEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
ZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5J
SUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUEKQU5JSUVBQUFJSTBBQVFB
QTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEUwpDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRCkFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFB
SUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUEKSUkwQUFRQUEwZ2dR
QUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTgpBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCCkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFB
UUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEKMGdnUUFBQWdq
UUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBQU5JSQpFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBCkFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWcKalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQQpBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBCkFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFMKQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBMGdnUQpBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBCklJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ04K
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJ
STBBQVFBQTBnZ1FBQUFnalFBQgpBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBCjBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFO
TDgKZjdmaGUyODdPWUNjQUFBQUFFbEZUa1N1UW1DQwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12076</attachid>
            <date>2006-12-27 23:11:11 -0800</date>
            <delta_ts>2006-12-27 23:26:44 -0800</delta_ts>
            <desc>An updated hack, with better memory management (just code see old patch for tests)</desc>
            <filename>svgimage2.patch</filename>
            <type>text/plain</type>
            <size>39044</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDQ5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYzIEBACisyMDA2LTEy
LTI3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHM6CisgICAgICAgICogZmFzdC9p
bWFnZXMvc3ZnLWFzLWltYWdlLmh0bWwKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdmctYXMtYmFj
a2dyb3VuZC5odG1sCisgICAgICAgICogZmFzdC9pbWFnZXMvc3ZnLWFzLXRpbGVkLWJhY2tncm91
bmQuaHRtbAorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IGEgaGFja2lzaCBTVkdJbWFnZSBm
b3IgdGhlIDNyZCB0aW1lLgorICAgICAgICBOb3cgdXNpbmcgdGhlIG1vc3QgZ3JvdGVzcXVlc3Qg
aGFjayBrbm93biB0byBtYW4uCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5NzEKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhd1RpbGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR0ltYWdlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6U1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6On5TVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6On5T
VkdFbXB0eUNyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OmNocm9tZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xp
ZW50OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OndpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6
cGFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2NhbGVG
YWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Zm9jdXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6dW5mb2N1cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbXB0eUNyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbXB0eUNyb21lQ2xpZW50OjpydW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUNyb21lQ2xpZW50OjpzZXRUb29sYmFyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlDcm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5Q3JvbWVDbGllbnQ6OnNldFN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzZXRNZW51YmFyVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjptZW51YmFyVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzZXRSZXNpemFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
Q3JvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Ojp+U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Omhhc0Zy
YW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpo
YXNCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6cmVzZXRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxJdGVtSXNUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bG9hZFByb3Zpc2lvbmFsSXRlbUZy
b21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6aW52YWxpZGF0ZUN1cnJlbnRJdGVtUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bWFrZURvY3VtZW50Vmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
c2V0RG9jdW1lbnRWaWV3RnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dEZvck5vbkhUTUwpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlSGlzdG9yeUZvckNvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVI
aXN0b3J5Rm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlGb3JSZWxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlSGlzdG9yeUZvclN0YW5k
YXJkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVIaXN0b3J5Rm9ySW50ZXJuYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlBZnRlckNsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldENvcGllc09uU2Ny
b2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnRva2Vu
Rm9yTG9hZEVycm9yUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6cmVzZXRBZnRlckxvYWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Ojpkb05vdFJlc2V0QWZ0ZXJMb2FkRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkZXRhY2hlZEZy
b21QYXJlbnQyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRldGFjaGVkRnJvbVBhcmVudDMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50NCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpsb2FkZWRGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRvd25sb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoSWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZp
cnN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjbGVhckxv
YWRpbmdGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmlzTG9hZGluZ0Zyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5Eb2N1bWVudEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNsZWFy
VW5hcmNoaXZpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6cHJvZ3Jlc3NDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tcGxldGVQcm9ncmVzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRNYWluRnJhbWVEb2N1
bWVudFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6d2lsbENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmFsU2V0dXBGb3JSZXBsYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNo
b3dVUkxFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjppbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
RmFsbEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojp3aWxsVXNlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50Ojppc0FyY2hpdmVMb2FkUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQZW5kaW5nQXJjaGl2ZUxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2xlYXJBcmNoaXZlZFJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpnZW5lcmF0ZWRNSU1FVHlwZUZv
clVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpmcmFtZUxvYWRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
VHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6YWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHSW1hZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZnJhbWVBdEluZGV4KToKKwog
MjAwNi0xMi0yNyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEJ1aWxkIGZpeCwgcGx1cyBhIGZldyAiZG91YmxlICYiID0+ICJkb3VibGUmIiBjaGFuZ2VzLgpJ
bmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg0NDkpCisrKyBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNzQsNiAr
MjA3NCw4IEBACiAJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdGQjA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE4QzRBODBFMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0ZDMDlENTYzMjcwMDAz
QUM4RCAvKiBBdHRyLmNwcCAqLzsgfTsKIAkJQThDNEE4NEMwOUQ1NjQ5RDAwMDNBQzhEIC8qIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEM0QTg0QjA5RDU2NDlEMDAwM0FDOEQgLyogTWFwcGVkQXR0cmlidXRlRW50
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
OEM5REQyNzBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDOUREMjUwQjQzNzQyNjAwOTc4ODNBIC8q
IFNWR0ltYWdlLmNwcCAqLzsgfTsKKwkJQThDOUREMjgwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0lt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM5
REQyNjBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuaCAqLzsgfTsKIAkJQThDRkYwNEQwQTE1
NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkYwNDgwQTE1NEYwOTAwMEE0MjM0IC8qIEZp
eGVkVGFibGVMYXlvdXQuY3BwICovOyB9OwogCQlBOENGRjA0RTBBMTU0RjA5MDAwQTQyMzQgLyog
QXV0b1RhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOENGRjA0OTBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggKi87
IH07CiAJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjA0QTBBMTU0
RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5oICovOyB9OwpAQCAtNTA0Nyw2ICs1MDQ5
LDggQEAKIAkJQThDNEE3RkIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0dHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThDNEE3RkMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF0dHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBOEM0QTg0QjA5RDU2NDlEMDAwM0FDOEQgLyogTWFwcGVkQXR0cmlidXRlRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcHBlZEF0dHJpYnV0ZUVudHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzlERDI1MEI0Mzc0MjYwMDk3ODgzQSAv
KiBTVkdJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdJ
bWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzlERDI2MEI0Mzc0MjYw
MDk3ODgzQSAvKiBTVkdJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjA0ODBBMTU0RjA5
MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRml4ZWRUYWJsZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4Q0ZGMDQ5MEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9UYWJsZUxheW91dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENGRjA0QTBBMTU0RjA5MDAwQTQyMzQgLyogRml4
ZWRUYWJsZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRU
YWJsZUxheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5Miw2ICs4NDk2
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUIyQTAxNTk3MEFGNkNENTMwMDZCQ0UwRSAvKiBj
ZyAqLywKIAkJCQlCMkUyN0JERDBCMEYyQUU1MDBGMTdDN0IgLyogZmlsdGVycyAqLywKKwkJCQlB
OEM5REQyNTBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuY3BwICovLAorCQkJCUE4QzlERDI2
MEI0Mzc0MjYwMDk3ODgzQSAvKiBTVkdJbWFnZS5oICovLAogCQkJCUIyRDg3QzZCMEIxMjRFNzMw
MEIwREUxRSAvKiBTVkdQYWludFNlcnZlci5jcHAgKi8sCiAJCQkJQjJEODdDNkMwQjEyNEU3MzAw
QjBERTFFIC8qIFNWR1BhaW50U2VydmVyLmggKi8sCiAJCQkJQjJEODdDNkQwQjEyNEU3MzAwQjBE
RTFFIC8qIFNWR1BhaW50U2VydmVyR3JhZGllbnQuY3BwICovLApAQCAtMTA4NjcsNiArMTA4NzMs
NyBAQAogCQkJCUIyQTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTg5OTQzMjgwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQUNGN0M0RTBCNDJFRTYwMDAwODBCRDggLyogU1ZHUGFyc2Vy
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEM5REQyODBCNDM3NDI2MDA5Nzg4M0Eg
LyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTIxOTMsNiArMTIyMDAsNyBAQAogCQkJ
CUIyMDgwQTEyMEIzQ0EzQjYwMDEyMDg1MiAvKiBKU1NWR1BvaW50TGlzdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODk5NDMyOTBCNDIzMzg4MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUFDRjdDNEYwQjQyRUU2MDAwMDgwQkQ4IC8qIFNWR1Bh
cnNlclV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEM5REQyNzBCNDM3NDI2MDA5
Nzg4M0EgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBsb2FkZXIvQ2FjaGVk
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9u
IDE4NDQ5KQorKysgbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgot
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyRnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2luY2x1ZGUgIlJlcXVlc3QuaCIKKyNpbmNsdWRlICJT
VkdJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgc3RkOjptYXg7CkBA
IC0xNDMsNiArMTQzLDExIEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSgp
CiAgICAgICAgICAgICBtX2ltYWdlID0gbmV3IFBERkRvY3VtZW50SW1hZ2U7CiAgICAgICAgIGVs
c2UKICNlbmRpZgorI2lmIFNWR19TVVBQT1JUCisgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkgPT0gImltYWdlL3N2Zyt4bWwiKQorICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBTVkdJ
bWFnZSh0aGlzKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2ltYWdlID0g
bmV3IEJpdG1hcEltYWdlKHRoaXMpOwogICAgIH0KIH0KSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNp
b24gMTg0NDkpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2lkdGgoKSBjb25zdDsKICAgICBpbnQg
aGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBib29sIHNldERhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIHZpcnR1YWwgYm9vbCBzZXREYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2
aXJ0dWFsIGJvb2wgc2V0TmF0aXZlRGF0YShOYXRpdmVCeXRlUHRyLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBWZWN0b3I8Y2hhcj4mIGRhdGFCdWZm
ZXIoKSB7IHJldHVybiBtX2RhdGE7IH0KSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAxODQ0OSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDE2IEBA
IHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnQKICAgICBjb250ZXh0LT5y
ZXN0b3JlKCk7CiB9CiAKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3Jj
UG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yKQorewor
ICAgIGZwcmludGYoc3RkZXJyLCAiUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBDb21wb3NpdGVPcGVyYXRvcikgbm90IGltcGxlbWVudGVkIik7Cit9CisKK3ZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKQoreworICAgIGZwcmludGYoc3RkZXJy
LCAiUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIFRpbGVSdWxlLCBUaWxlUnVsZSwgQ29tcG9zaXRl
T3BlcmF0b3IpIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9S
TShDRykKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHJldmlz
aW9uIDE4NDQ5KQorKysgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvcik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2lu
dCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIHsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKSAgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50KTsKICAgICAgICAg
aW50IHBhZ2VDb3VudCgpIGNvbnN0OwpJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR0lt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHSW1hZ2UuY3Bw
CShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJp
YyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2lmZGVmIFNWR19TVVBQT1JUCisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJDb250ZXh0TWVudUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5j
bHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lTWFjLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIK
KyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVk
ZSAiU1ZHTGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHSW1hZ2U6OlNWR0ltYWdlKElt
YWdlQW5pbWF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisg
ICAgLCBtX2RvY3VtZW50KDApCisgICAgLCBtX3BhZ2UoMCkKKyAgICAsIG1fZnJhbWUoMCkKKyAg
ICAsIG1fZnJhbWVWaWV3KDApCit7Cit9CisKK1NWR0ltYWdlOjp+U1ZHSW1hZ2UoKQoreworfQor
CitJbnRTaXplIFNWR0ltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICBJbnRTaXplIGRlZmF1bHRT
aXplKDMwMCwgMTUwKTsKKyAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSdsbCBiZSBwYXNzZWQg
aW4gdGhlIGRlc3Qgc2l6ZQorICAgIEludFNpemUgZGVzdFNpemUgPSBkZWZhdWx0U2l6ZTsKKyAg
ICAKKyAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybiBJbnRTaXplKCk7CisgICAgCisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVu
dCgpOworICAgIGlmICghcm9vdEVsZW1lbnQpCisgICAgICAgIHJldHVybiBkZWZhdWx0U2l6ZTsK
KyAgICAKKyAgICBTVkdMZW5ndGggd2lkdGggPSByb290RWxlbWVudC0+d2lkdGgoKTsKKyAgICBT
VkdMZW5ndGggaGVpZ2h0ID0gcm9vdEVsZW1lbnQtPmhlaWdodCgpOworICAgIAorICAgIEludFNp
emUgc3ZnU2l6ZTsKKyAgICAvLyBGSVhNRTogV2UgaGF2ZSBubyB2aWV3IHRvIHNpemUgYWdhaW5z
dCwgdGh1cyBwZXJjZW50YWdlcyBhcmUgYWx3YXlzIDAsIGhlbmNlIHdlIGhhY2sgZm9yIG5vdzoK
KyAgICBpZiAod2lkdGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAg
ICAgc3ZnU2l6ZS5zZXRXaWR0aChkZXN0U2l6ZS53aWR0aCgpICogd2lkdGgudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCkpOworICAgIGVsc2UKKyAgICAgICAgc3ZnU2l6ZS5zZXRXaWR0aCh3aWR0aC52
YWx1ZSgpKTsKKyAgICBpZiAoaGVpZ2h0LnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2UpCisgICAgICAgIHN2Z1NpemUuc2V0SGVpZ2h0KGRlc3RTaXplLmhlaWdodCgpICogaGVpZ2h0
LnZhbHVlSW5TcGVjaWZpZWRVbml0cygpKTsKKyAgICBlbHNlCisgICAgICAgIHN2Z1NpemUuc2V0
SGVpZ2h0KGhlaWdodC52YWx1ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gc3ZnU2l6ZTsKK30KKwor
dm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGRzdFJlY3QpKTsKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigp
LngoKSwgZHN0UmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKGRzdFJlY3Qud2lkdGgoKS9zcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkvc3Jj
UmVjdC5oZWlnaHQoKSkpOworICAgIG1fZnJhbWUtPnBhaW50KGNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3Qoc3JjUmVjdCkpOworICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKK30KKwordm9pZCBTVkdJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IENvbXBvc2l0ZU9wZXJhdG9yKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiU1ZHSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IpIG5vdCBpbXBsZW1lbnRl
ZCIpOworfQorCit2b2lkIFNWR0ltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIFRpbGVSdWxl
IGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3IpCit7CisgICAgZnByaW50
ZihzdGRlcnIsICJTVkdJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIFRpbGVSdWxlLCBUaWxlUnVsZSwgQ29tcG9zaXRl
T3BlcmF0b3IpIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCitjbGFzcyBTVkdFbXB0eUNyb21lQ2xp
ZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHRW1w
dHlDcm9tZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSB7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCkgeyByZXR1cm4gRmxvYXRS
ZWN0KCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpIHsgcmV0dXJu
IEZsb2F0UmVjdCgpOyB9CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBzY2FsZUZhY3RvcigpIHsg
cmV0dXJuIDFmOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIHVuZm9jdXMoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdp
bmRvdyhjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
UGFnZSogY3JlYXRlTW9kYWxEaWFsb2coY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpIHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9v
bCBjYW5SdW5Nb2RhbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bk1v
ZGFsKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29s
KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgRnJhbWUqIGZyYW1lKSB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIHsgfQorfTsKKworY2xhc3MgU1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudCgpIHsgIH0KKyAgICB2aXJ0dWFsIHZv
aWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
V2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25z
CisgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0g
Ly8gZGl0dG8KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQmFja0ZvcndhcmRMaXN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRCYWNrRm9yd2FyZExp
c3QoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcHJvdmlzaW9uYWxJdGVtSXNUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBsb2FkUHJvdmlzaW9u
YWxJdGVtRnJvbVBhZ2VDYWNoZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVDdXJyZW50SXRlbVBhZ2VDYWNoZSgpIHsgfQorICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZURvY3VtZW50VmlldygpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyNpZiBQTEFURk9S
TShNQUMpCisgICAgdmlydHVhbCB2b2lkIHNldERvY3VtZW50Vmlld0Zyb21QYWdlQ2FjaGUoTlNE
aWN0aW9uYXJ5ICopIHsgfQorI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIHsgfQorICAgIAor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCkgeyB9CisgICAgCisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUhpc3RvcnlGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvclJlbG9hZCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUhpc3RvcnlGb3JJbnRlcm5hbExvYWQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlSGlzdG9yeUFmdGVyQ2xpZW50UmVkaXJlY3QoKSB7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIExv
YWRFcnJvclJlc2V0VG9rZW4qIHRva2VuRm9yTG9hZEVycm9yUmVzZXQoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QWZ0ZXJMb2FkRXJyb3IoTG9hZEVycm9yUmVzZXRUb2tl
biopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb05vdFJlc2V0QWZ0ZXJMb2FkRXJyb3IoTG9hZEVy
cm9yUmVzZXRUb2tlbiopIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQxKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hlZEZyb21QYXJlbnQ0KCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGxv
YWRlZEZyb21QYWdlQ2FjaGUoKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkKFJlc291cmNlSGFuZGxlKiwgTlNVUkxSZXF1ZXN0ICosIE5TVVJM
UmVzcG9uc2UgKikgeyB9CisgICAgCisgICAgdmlydHVhbCBpZCBkaXNwYXRjaElkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TVVJMUmVxdWVzdCAqZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBpZCBpZGVudGlmaWVyLCBOU1VSTFJlcXVlc3QgKiwg
TlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciosIGlkIGlkZW50aWZpZXIsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCBpZCBpZGVudGlmaWVyLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNw
b25zZShEb2N1bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIsIE5TVVJMUmVzcG9uc2UgKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1l
bnRMb2FkZXIqLCBpZCBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBpZCBp
ZGVudGlmaWVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhE
b2N1bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqLCBOU1VSTFJlcXVlc3QgKiwgTlNVUkxSZXNwb25zZSAqLCBpbnQgbGVu
Z3RoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwm
LCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCkgeyB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIHsgfQorICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoTlNV
UkxSZXF1ZXN0ICopIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9s
aWN5RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyB9CisjZW5k
aWYKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSB7IH0KKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
b2FkTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyTG9hZGluZ0Zyb21QYWdlQ2FjaGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkaW5nRnJvbVBhZ2VDYWNoZShEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9h
ZGVyKikgeyB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9j
dW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyNl
bmRpZgorICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuYXJjaGl2aW5nU3RhdGUoRG9jdW1lbnRMb2Fk
ZXIqKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NTdGFydGVkKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHByb2dyZXNzQ29tcGxldGVkKCkgeyB9CisgICAgCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQcm9ncmVzcyhpZCBpZGVudGlmaWVy
LCBOU1VSTFJlc3BvbnNlICopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQcm9ncmVz
cyhpZCBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcGxldGVQcm9ncmVzcyhpZCBpZGVudGlmaWVyKSB7IH0KKyNlbmRpZgorICAgIAorICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpIHsgfQorICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSB7IH0KKyNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
dmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwg
aW50KSB7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxTZXR1cEZvclJlcGxhY2UoRG9j
dW1lbnRMb2FkZXIqKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RT
aG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gUmVzb3VyY2VFcnJv
cigpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdEZvclBvbGljeUNoYW5n
ZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsg
fQorICAgIAorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9Cisg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisgICAgCisgICAgdmly
dHVhbCBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiBm
YWxzZTsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmco
Ym9vbCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCB3aWxs
VXNlQXJjaGl2ZShSZXNvdXJjZUxvYWRlciosIE5TVVJMUmVxdWVzdCAqLCBjb25zdCBLVVJMJiBv
cmlnaW5hbFVSTCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwg
Ym9vbCBpc0FyY2hpdmVMb2FkUGVuZGluZyhSZXNvdXJjZUxvYWRlciopIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlbmRpbmdBcmNoaXZlTG9hZChSZXNv
dXJjZUxvYWRlciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckFyY2hpdmVkUmVzb3VyY2Vz
KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1l
KGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYg
VVJMU2NoZW1lKSBjb25zdCB7IHJldHVybiAiIjsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBm
cmFtZUxvYWRDb21wbGV0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVNjcm9sbFBv
c2l0aW9uQW5kVmlld1N0YXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1
cnJlbnQoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVybiBuZXcgRG9jdW1lbnRMb2FkZXIocmVx
dWVzdCk7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBLVVJMJikgeyB9CisgICAgCisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KCkgeyByZXR1cm4gIiI7IH0KK307CisKK2NsYXNzIFNWR0VtcHR5RWRpdG9yQ2xpZW50IDog
cHVibGljIEVkaXRvckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHRW1wdHlFZGl0
b3JDbGllbnQoKSB7ICB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxF
bGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0gCisgICAgdmlydHVhbCBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgeyB9CisgICAgdmlydHVhbCBpbnQg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSB7IHJldHVybiAtMTsgfQorICAgIAorICAgIHZpcnR1
YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAg
dmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVk
aXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAvLyAgdmlydHVhbCBib29s
IHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiByZXBsYWNpbmdSYW5nZSwgV2ViVmlld0lu
c2VydEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5z
ZXJ0VGV4dChTdHJpbmcsIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5n
ZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZSwgTlNTZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBz
dGlsbFNlbGVjdGluZykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QXBwbHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlVHlwaW5nU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogZnJvbVN0eWxlLCBDU1NTdHlsZURlY2xhcmF0aW9uKiB0b1N0eWxlKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIC8vICB2aXJ0dWFsIGJvb2wgZG9Db21tYW5kQnlTZWxlY3RvcihT
RUwgc2VsZWN0b3IpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgLy8KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmVnaW5FZGl0aW5nKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgeyB9CisgICAg
Ly8gIHZpcnR1YWwgdm9pZCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGU6KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uIHsgfQorICAgIC8vICB2aXJ0dWFsIHZvaWQgd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24geyB9CisgICAgLy8g
IHZpcnR1YWwgTlNVbmRvTWFuYWdlciogdW5kb01hbmFnZXJGb3JXZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyB7IHJldHVybiAwOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29t
bWFuZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSB7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1
YWwgdm9pZCB1bmRvKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSB7IH0KKyAgICAKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlY29tZSBTZWxlY3Rp
b25Db250cm9sbGVyOjp0b1dlYkFyY2hpdmUoKQorICAgIHZpcnR1YWwgTlNEYXRhKiBkYXRhRm9y
QXJjaGl2ZWRTZWxlY3Rpb24oRnJhbWUqKSB7IHJldHVybiAwOyB9IAorICAgIAorICAgIHZpcnR1
YWwgTlNTdHJpbmcqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMKikgeyByZXR1cm4gMDsgfQorI2Vu
ZGlmCisgICAgCit9OworCitjbGFzcyBTVkdFbXB0eUNvbnRleHRNZW51Q2xpZW50IDogcHVibGlj
IENvbnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdFbXB0eUNvbnRl
eHRNZW51Q2xpZW50KCkgeyAgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3ll
ZCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDdXN0b21Db250ZXh0TWVudUl0ZW1z
KENvbnRleHRNZW51KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgeyB9CisgICAgCisgICAg
dmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNvcHlJbWFnZVRvQ2xpcGJvYXJkKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wU3Bl
YWtpbmcoKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHNl
YXJjaFdpdGhTcG90bGlnaHQoKSB7IH0KKyNlbmRpZgorfTsKKworYm9vbCBTVkdJbWFnZTo6c2V0
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBpbnQgbGVuZ3RoID0gZGF0YUJ1ZmZl
cigpLnNpemUoKTsKKyAgICBpZiAoIWxlbmd0aCkgLy8gaWYgdGhpcyB3YXMgYW4gZW1wdHkgaW1h
Z2UKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkg
eworICAgICAgICBzdGF0aWMgQ2hyb21lQ2xpZW50KiBkdW1teUNocm9tZUNsaWVudCA9IG5ldyBT
VkdFbXB0eUNyb21lQ2xpZW50OworICAgICAgICBzdGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGR1
bW15RnJhbWVMb2FkZXJDbGllbnQgPSAgbmV3IFNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ7Cisg
ICAgICAgIHN0YXRpYyBFZGl0b3JDbGllbnQqIGR1bW15RWRpdG9yQ2xpZW50ID0gbmV3IFNWR0Vt
cHR5RWRpdG9yQ2xpZW50OworICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15
Q29udGV4dE1lbnVDbGllbnQgPSBuZXcgU1ZHRW1wdHlDb250ZXh0TWVudUNsaWVudDsKKyAgICAg
ICAgc3RhdGljIFNldHRpbmdzKiBkdW1teVNldHRpbmdzID0gbmV3IFNldHRpbmdzOworCisgICAg
ICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoZHVtbXlDaHJvbWVDbGllbnQsIGR1bW15Q29udGV4dE1l
bnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50KSk7CisgICAgICAgIG1fZnJhbWUgPSBuZXcgRnJh
bWVNYWMobV9wYWdlLmdldCgpLCAwLCBkdW1teUZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAg
bV9mcmFtZVZpZXcgPSBuZXcgRnJhbWVWaWV3KG1fZnJhbWUuZ2V0KCkpOworICAgICAgICBtX2Zy
YW1lLT5zZXRWaWV3KG1fZnJhbWVWaWV3LmdldCgpKTsKKyAgICAgICAgbV9mcmFtZS0+c2V0U2V0
dGluZ3MoZHVtbXlTZXR0aW5ncyk7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zZXRSZXNw
b25zZU1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5iZWdpbigicGxhY2Vob2xkZXIuc3ZnIik7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT53
cml0ZShkYXRhQnVmZmVyKCkuZGF0YSgpLCBkYXRhQnVmZmVyKCkuc2l6ZSgpKTsKKyAgICAgICAg
bV9mcmFtZS0+bG9hZGVyKCktPmVuZCgpOworICAgIH0KKyAgICByZXR1cm4gbV9mcmFtZVZpZXc7
Cit9CisKK30KKworI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGlj
cy9zdmcvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZH
SW1hZ2UuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2Vf
SAorI2RlZmluZSBTVkdJbWFnZV9ICisKKyNpZmRlZiBTVkdfU1VQUE9SVAorCisjaW5jbHVkZSAi
SW1hZ2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8V1RGL093blB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgU1ZHRG9jdW1lbnQ7CisgICAg
Y2xhc3MgRnJhbWU7CisgICAgY2xhc3MgRnJhbWVWaWV3OworICAgIGNsYXNzIFBhZ2U7CisgICAg
CisgICAgY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgU1ZHSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciopOworICAgICAgICB+U1ZHSW1hZ2Uo
KTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAg
ICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChz
aXplX3QpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgCitwcml2YXRlOgorICAgICAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNp
emUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVy
YXRvcik7CisgICAgICAgIAorICAgICAgICBTVkdEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICAg
ICAgT3duUHRyPFBhZ2U+IG1fcGFnZTsKKyAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwor
ICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX2ZyYW1lVmlldzsKKyAgICAgICAgSW50U2l6ZSBt
X21pblNpemU7CisgICAgfTsKK30KKworI2VuZGlmIC8vIFNWR19TVVBQT1JUCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12077</attachid>
            <date>2006-12-27 23:26:44 -0800</date>
            <delta_ts>2006-12-28 20:40:15 -0800</delta_ts>
            <desc>A slightly prettier version</desc>
            <filename>svgimage3.patch</filename>
            <type>text/plain</type>
            <size>60058</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NDQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsMTggQEAKLTIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJp
Y0Blc2VpZGVsLmNvbT4KKzIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGVzdCBjYXNlcyBmb3IgU1ZHSW1hZ2UKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTk3MQorCisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
Z2lmLXdpdGgtb2Zmc2V0cy1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXdpdGgtb2Zmc2V0cy1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi1maXhlZC1zaXplLXJlY3Quc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdmctYXMtYmFja2dyb3VuZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdmctYXMtaW1hZ2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9pbWFnZXMvc3ZnLWFzLXRpbGVkLWJhY2tncm91bmQuaHRtbDogQWRkZWQu
CisKKzIwMDYtMTItMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IGdnYXJlbi4KICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi13aXRoLW9mZnNldHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9hbmltYXRlZC1naWYtd2l0aC1vZmZzZXRzLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACis1MjcyZmY1Y2QwMWFhMTdlMDIwYWIxNGE5MzIzNTJhYQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1h
cy1iYWNrZ3JvdW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
c3ZnLWFzLWJhY2tncm91bmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3N2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeworICBiYWNrZ3JvdW5kOiByZWQ7Cisg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybChy
ZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0LnN2Zyk7CisgIGhlaWdodDogMTAwcHg7Cisg
IHdpZHRoOiAxMDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0nbWFyZ2lu
OiAwcHgnPgorPGRpdj4mbmJzcDs8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtaW1h
Z2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtaW1h
Z2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1hcy1p
bWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorZGl2IHsKKyAgYmFja2dyb3VuZDogcmVkOworICBoZWlnaHQ6IDEwMHB4OworICB3
aWR0aDogMTAwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9J21hcmdpbjog
MHB4Jz4KKzxkaXY+CisgIDxpbWcgc3JjPSdyZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0
LnN2Zyc+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdmctYXMtdGlsZWQtYmFja2dyb3Vu
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N2Zy1hcy10aWxl
ZC1iYWNrZ3JvdW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9zdmctYXMtdGlsZWQtYmFja2dyb3VuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2IHsKKyAgYmFja2dyb3VuZDogcmVkOwor
ICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OworICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTog
NTAlOworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwocmVzb3VyY2VzL2dyZWVuLWZpeGVkLXNpemUt
cmVjdC5zdmcpOworICBoZWlnaHQ6IDEwMHB4OworICB3aWR0aDogMTAwcHg7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KKzxkaXY+CisgICZuYnNwOwor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2dyZWVuLWZpeGVkLXNpemUtcmVj
dC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2dy
ZWVuLWZpeGVkLXNpemUtcmVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9yZXNvdXJjZXMvZ3JlZW4tZml4ZWQtc2l6ZS1yZWN0LnN2ZwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
d2lkdGg9JzEwMHB4JyBoZWlnaHQ9JzEwMHB4Jz4KKyAgICA8cmVjdCBmaWxsPSdncmVlbicgd2lk
dGg9JzEwMHB4JyBoZWlnaHQ9JzEwMHB4JyAvPgorPC9zdmc+CkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0NDkpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAw
Ni0xMi0yNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzOgorICAgICAgICAqIGZh
c3QvaW1hZ2VzL3N2Zy1hcy1pbWFnZS5odG1sCisgICAgICAgICogZmFzdC9pbWFnZXMvc3ZnLWFz
LWJhY2tncm91bmQuaHRtbAorICAgICAgICAqIGZhc3QvaW1hZ2VzL3N2Zy1hcy10aWxlZC1iYWNr
Z3JvdW5kLmh0bWwKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudCBhIGhhY2tpc2ggU1ZHSW1h
Z2UgZm9yIHRoZSAzcmQgdGltZS4KKyAgICAgICAgTm93IHVzaW5nIHRoZSBtb3N0IGdyb3Rlc3F1
ZXN0IGhhY2sga25vd24gdG8gbWFuLgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTcxCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N2Zy9TVkdJbWFnZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OlNWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjp+U1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21lQ2xpZW50
Ojp+U1ZHRW1wdHlDcm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21l
Q2xpZW50OjpjaHJvbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9t
ZUNsaWVudDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUNyb21l
Q2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OnBhZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmZvY3Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnVuZm9jdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmNyZWF0ZU1vZGFsRGlhbG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnNob3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y2FuUnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6cnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlDcm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbXB0eUNyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2Nyb2xsYmFyc1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0TWVudWJhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6bWVudWJhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6c2V0UmVzaXphYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGllbnQ6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlDcm9tZUNsaWVudDo6Y2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5Q3JvbWVDbGll
bnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUNyb21lQ2xpZW50OjpjbG9zZVdpbmRvd1Nvb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6flNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6aGFz
V2ViVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpo
YXNGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6aGFzQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlc2V0QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsSXRlbUlzVGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRQcm92aXNpb25hbEl0
ZW1Gcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmludmFsaWRhdGVDdXJyZW50SXRlbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Om1ha2VEb2N1bWVudFZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnNldERvY3VtZW50Vmlld0Zyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlGb3JD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dXBk
YXRlSGlzdG9yeUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVIaXN0b3J5Rm9yUmVsb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUhpc3RvcnlGb3JT
dGFuZGFyZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6dXBkYXRlSGlzdG9yeUZvckludGVybmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVIaXN0b3J5QWZ0ZXJDbGllbnRSZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRDb3BpZXNP
blNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp0
b2tlbkZvckxvYWRFcnJvclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlc2V0QWZ0ZXJMb2FkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZG9Ob3RSZXNldEFmdGVyTG9hZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVu
dDEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNo
ZWRGcm9tUGFyZW50Mik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6bG9hZGVkRnJvbVBhZ2VDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaElkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGlj
eUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRNYWluUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2xl
YXJMb2FkaW5nRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50Ojppc0xvYWRpbmdGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRNYWluRG9jdW1l
bnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
bGVhclVuYXJjaGl2aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6cHJvZ3Jlc3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OnByb2dyZXNzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbXBsZXRlUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0TWFpbkZyYW1l
RG9jdW1lbnRSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmaW5hbFNldHVwRm9yUmVwbGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5u
b3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlz
dEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNo
b3VsZEZhbGxCYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6d2lsbFVzZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6aXNBcmNoaXZlTG9hZFBlbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUGVuZGluZ0FyY2hpdmVMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNsZWFyQXJjaGl2
ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Z2VuZXJhdGVkTUlNRVR5
cGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZnJhbWVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRT
dGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL1NWR0lt
YWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmZyYW1lQXRJbmRleCk6
CisKIDIwMDYtMTItMjcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXgsIHBsdXMgYSBmZXcgImRvdWJsZSAmIiA9PiAiZG91YmxlJiIgY2hhbmdl
cy4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxODQ0OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDc0LDYgKzIwNzQsOSBAQAogCQlBOEM0QTgwRDA5RDU2MzI3
MDAwM0FDOEQgLyogQXR0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDNEE3RkIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTgwRTA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi87IH07CiAJCUE4
QzRBODRDMDlENTY0OUQwMDAzQUM4RCAvKiBNYXBwZWRBdHRyaWJ1dGVFbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE4NEIwOUQ1NjQ5RDAw
MDNBQzhEIC8qIE1hcHBlZEF0dHJpYnV0ZUVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQThDOUREMjcwQjQzNzQyNjAwOTc4ODNBIC8qIFNW
R0ltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QzlERDI1MEI0Mzc0MjYwMDk3ODgzQSAvKiBTVkdJbWFnZS5jcHAgKi87IH07CisJCUE4QzlE
RDI4MEI0Mzc0MjYwMDk3ODgzQSAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDOUREMjYwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0lt
YWdlLmggKi87IH07CisJCUE4QzlFMDk1MEI0M0E1MjUwMDk3ODgzQSAvKiBTVkdJbWFnZUVtcHR5
Q2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThDOUUwOTQwQjQzQTUyNTAwOTc4ODNBIC8qIFNWR0ltYWdlRW1wdHlDbGllbnRzLmggKi87IH07
CiAJCUE4Q0ZGMDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGMDQ4MEExNTRG
MDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCAqLzsgfTsKIAkJQThDRkYwNEUwQTE1
NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkYwNDkwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9U
YWJsZUxheW91dC5oICovOyB9OwogCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRU
YWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThDRkYwNEEwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCAqLzsgfTsK
QEAgLTUwNDcsNiArNTA1MCw5IEBACiAJCUE4QzRBN0ZCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE4NEIwOUQ1NjQ5RDAwMDNBQzhEIC8qIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBwZWRB
dHRyaWJ1dGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEM5REQyNTBC
NDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
OEM5REQyNjBCNDM3NDI2MDA5Nzg4M0EgLyogU1ZHSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThDOUUwOTQwQjQzQTUyNTAwOTc4ODNBIC8qIFNWR0ltYWdlRW1wdHlDbGllbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlRW1wdHlDbGllbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGMDQ4MEExNTRGMDkwMDBBNDIzNCAvKiBGaXhl
ZFRhYmxlTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aXhlZFRhYmxlTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkYw
NDkwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV0b1RhYmxlTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4Q0ZGMDRBMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaXhlZFRhYmxlTGF5b3V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDkyLDYgKzg0OTgsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJQjJBMDE1OTcwQUY2Q0Q1MzAwNkJDRTBFIC8qIGNnICovLAogCQkJCUIyRTI3
QkREMEIwRjJBRTUwMEYxN0M3QiAvKiBmaWx0ZXJzICovLAorCQkJCUE4QzlERDI1MEI0Mzc0MjYw
MDk3ODgzQSAvKiBTVkdJbWFnZS5jcHAgKi8sCisJCQkJQThDOUREMjYwQjQzNzQyNjAwOTc4ODNB
IC8qIFNWR0ltYWdlLmggKi8sCiAJCQkJQjJEODdDNkIwQjEyNEU3MzAwQjBERTFFIC8qIFNWR1Bh
aW50U2VydmVyLmNwcCAqLywKIAkJCQlCMkQ4N0M2QzBCMTI0RTczMDBCMERFMUUgLyogU1ZHUGFp
bnRTZXJ2ZXIuaCAqLywKIAkJCQlCMkQ4N0M2RDBCMTI0RTczMDBCMERFMUUgLyogU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudC5jcHAgKi8sCkBAIC04NTE1LDYgKzg1MjMsNyBAQAogCQkJCUIyQTAxNUE1
MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hcmtlci5oICovLAogCQkJCUIyQTAxNUE2
MEFGNkNENTMwMDZCQ0UwRSAvKiBTVkdSZXNvdXJjZU1hc2tlci5jcHAgKi8sCiAJCQkJQjJBMDE1
QTcwQUY2Q0Q1MzAwNkJDRTBFIC8qIFNWR1Jlc291cmNlTWFza2VyLmggKi8sCisJCQkJQThDOUUw
OTQwQjQzQTUyNTAwOTc4ODNBIC8qIFNWR0ltYWdlRW1wdHlDbGllbnRzLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHN2ZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDg2Nyw2ICsx
MDg3Niw4IEBACiAJCQkJQjJBMTBCOTIwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODk5NDMyODBCNDIzMzg4MDBEN0M4MDIgLyogQml0bWFwSW1h
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQ0Y3QzRFMEI0MkVFNjAwMDA4MEJEOCAvKiBTVkdQ
YXJzZXJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4QzlERDI4MEI0Mzc0MjYwMDk3
ODgzQSAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThDOUUwOTUwQjQzQTUyNTAw
OTc4ODNBIC8qIFNWR0ltYWdlRW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEyMTkz
LDYgKzEyMjA0LDcgQEAKIAkJCQlCMjA4MEExMjBCM0NBM0I2MDAxMjA4NTIgLyogSlNTVkdQb2lu
dExpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAwRDdD
ODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBQ0Y3QzRGMEI0MkVF
NjAwMDA4MEJEOCAvKiBTVkdQYXJzZXJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QThDOUREMjcwQjQzNzQyNjAwOTc4ODNBIC8qIFNWR0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTg0NDkpCisrKyBXZWJDb3JlL2xv
YWRlci9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkxvYWRlckZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBERkRvY3VtZW50
SW1hZ2UuaCIKICNpbmNsdWRlICJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIHN0ZDo6bWF4OwpAQCAtMTQzLDYgKzE0Mywx
MSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICAgICAg
bV9pbWFnZSA9IG5ldyBQREZEb2N1bWVudEltYWdlOwogICAgICAgICBlbHNlCiAjZW5kaWYKKyNp
ZiBTVkdfU1VQUE9SVAorICAgICAgICBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJpbWFn
ZS9zdmcreG1sIikKKyAgICAgICAgICAgIG1faW1hZ2UgPSBuZXcgU1ZHSW1hZ2UodGhpcyk7Cisg
ICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgICAgbV9pbWFnZSA9IG5ldyBCaXRtYXBJbWFn
ZSh0aGlzKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZp
c2lvbiAxODQ0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdpZHRoKCkgY29uc3Q7
CiAgICAgaW50IGhlaWdodCgpIGNvbnN0OwogCi0gICAgYm9vbCBzZXREYXRhKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdmlydHVhbCBib29sIHNldE5hdGl2ZURhdGEoTmF0aXZlQnl0ZVB0ciwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgVmVjdG9yPGNoYXI+
JiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9kYXRhOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDE4NDQ5
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1MywxNiBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogfQogCit2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLCBDb21wb3NpdGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlBE
RkRvY3VtZW50SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0
b3IpIG5vdCBpbXBsZW1lbnRlZCIpOworfQorCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3Np
dGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlBERkRvY3VtZW50SW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBUaWxlUnVsZSwgVGlsZVJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKSBub3QgaW1wbGVtZW50
ZWQiKTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ0cpCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMTg0
NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcikgIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxlZChHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7CiAgICAgICAg
IGludCBwYWdlQ291bnQoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3ZnL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N2Zy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N2Zy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBTVkdfU1VQUE9SVAorCisjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTWFjLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUg
IlNWR0ltYWdlLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJTVkdJbWFnZUVtcHR5
Q2xpZW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0ltYWdlOjpTVkdJbWFnZShJ
bWFnZUFuaW1hdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQor
ICAgICwgbV9kb2N1bWVudCgwKQorICAgICwgbV9wYWdlKDApCisgICAgLCBtX2ZyYW1lKDApCisg
ICAgLCBtX2ZyYW1lVmlldygwKQoreworfQorCitTVkdJbWFnZTo6flNWR0ltYWdlKCkKK3sKK30K
KworSW50U2l6ZSBTVkdJbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgSW50U2l6ZSBkZWZhdWx0
U2l6ZSgzMDAsIDE1MCk7CisgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2UnbGwgYmUgcGFzc2Vk
IGluIHRoZSBkZXN0IHNpemUKKyAgICBJbnRTaXplIGRlc3RTaXplID0gZGVmYXVsdFNpemU7Cisg
ICAgCisgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOworICAgIAorICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1l
bnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7
CisgICAgCisgICAgU1ZHTGVuZ3RoIHdpZHRoID0gcm9vdEVsZW1lbnQtPndpZHRoKCk7CisgICAg
U1ZHTGVuZ3RoIGhlaWdodCA9IHJvb3RFbGVtZW50LT5oZWlnaHQoKTsKKyAgICAKKyAgICBJbnRT
aXplIHN2Z1NpemU7CisgICAgLy8gRklYTUU6IFdlIGhhdmUgbm8gdmlldyB0byBzaXplIGFnYWlu
c3QsIHRodXMgcGVyY2VudGFnZXMgYXJlIGFsd2F5cyAwLCBoZW5jZSB3ZSBoYWNrIGZvciBub3c6
CisgICAgaWYgKHdpZHRoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAg
ICAgIHN2Z1NpemUuc2V0V2lkdGgoZGVzdFNpemUud2lkdGgoKSAqIHdpZHRoLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpKTsKKyAgICBlbHNlCisgICAgICAgIHN2Z1NpemUuc2V0V2lkdGgod2lkdGgu
dmFsdWUoKSk7CisgICAgaWYgKGhlaWdodC51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50
YWdlKQorICAgICAgICBzdmdTaXplLnNldEhlaWdodChkZXN0U2l6ZS5oZWlnaHQoKSAqIGhlaWdo
dC52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSk7CisgICAgZWxzZQorICAgICAgICBzdmdTaXplLnNl
dEhlaWdodChoZWlnaHQudmFsdWUoKSk7CisgICAgCisgICAgcmV0dXJuIHN2Z1NpemU7Cit9CisK
K3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3ApCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50
UmVjdChkc3RSZWN0KSk7CisgICAgY29udGV4dC0+dHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24o
KS54KCksIGRzdFJlY3QubG9jYXRpb24oKS55KCkpOworICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0
U2l6ZShkc3RSZWN0LndpZHRoKCkvc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpL3Ny
Y1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBtX2ZyYW1lLT5wYWludChjb250ZXh0LCBlbmNsb3NpbmdJ
bnRSZWN0KHNyY1JlY3QpKTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7Cit9CisKK3ZvaWQgU1ZH
SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBDb21wb3NpdGVPcGVyYXRvcikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlNWR0ltYWdlOjpk
cmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yKSBub3QgaW1wbGVtZW50
ZWQiKTsKK30KKwordm9pZCBTVkdJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBUaWxlUnVs
ZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKQoreworICAgIGZwcmlu
dGYoc3RkZXJyLCAiU1ZHSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBUaWxlUnVsZSwgVGlsZVJ1bGUsIENvbXBvc2l0
ZU9wZXJhdG9yKSBub3QgaW1wbGVtZW50ZWQiKTsKK30KKworYm9vbCBTVkdJbWFnZTo6c2V0RGF0
YShib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBpbnQgbGVuZ3RoID0gZGF0YUJ1ZmZlcigp
LnNpemUoKTsKKyAgICBpZiAoIWxlbmd0aCkgLy8gaWYgdGhpcyB3YXMgYW4gZW1wdHkgaW1hZ2UK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewor
ICAgICAgICBzdGF0aWMgQ2hyb21lQ2xpZW50KiBkdW1teUNocm9tZUNsaWVudCA9IG5ldyBTVkdF
bXB0eUNyb21lQ2xpZW50OworICAgICAgICBzdGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGR1bW15
RnJhbWVMb2FkZXJDbGllbnQgPSAgbmV3IFNWR0VtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CisgICAg
ICAgIHN0YXRpYyBFZGl0b3JDbGllbnQqIGR1bW15RWRpdG9yQ2xpZW50ID0gbmV3IFNWR0VtcHR5
RWRpdG9yQ2xpZW50OworICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29u
dGV4dE1lbnVDbGllbnQgPSBuZXcgU1ZHRW1wdHlDb250ZXh0TWVudUNsaWVudDsKKyAgICAgICAg
c3RhdGljIFNldHRpbmdzKiBkdW1teVNldHRpbmdzID0gbmV3IFNldHRpbmdzOworCisgICAgICAg
IG1fcGFnZS5zZXQobmV3IFBhZ2UoZHVtbXlDaHJvbWVDbGllbnQsIGR1bW15Q29udGV4dE1lbnVD
bGllbnQsIGR1bW15RWRpdG9yQ2xpZW50KSk7CisgICAgICAgIG1fZnJhbWUgPSBuZXcgRnJhbWVN
YWMobV9wYWdlLmdldCgpLCAwLCBkdW1teUZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAgbV9m
cmFtZVZpZXcgPSBuZXcgRnJhbWVWaWV3KG1fZnJhbWUuZ2V0KCkpOworICAgICAgICBtX2ZyYW1l
LT5zZXRWaWV3KG1fZnJhbWVWaWV3LmdldCgpKTsKKyAgICAgICAgbV9mcmFtZS0+c2V0U2V0dGlu
Z3MoZHVtbXlTZXR0aW5ncyk7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zZXRSZXNwb25z
ZU1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5i
ZWdpbigicGxhY2Vob2xkZXIuc3ZnIik7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT53cml0
ZShkYXRhQnVmZmVyKCkuZGF0YSgpLCBkYXRhQnVmZmVyKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmVuZCgpOworICAgIH0KKyAgICByZXR1cm4gbV9mcmFtZVZpZXc7Cit9
CisKK30KKworI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3ZnL1NWR0ltYWdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9TVkdJbWFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgU1ZHSW1hZ2VfSAorI2RlZmluZSBTVkdJbWFnZV9ICisKKyNpZmRlZiBTVkdf
U1VQUE9SVAorCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5j
bHVkZSA8V1RGL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xh
c3MgU1ZHRG9jdW1lbnQ7CisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgRnJhbWVWaWV3Owor
ICAgIGNsYXNzIFBhZ2U7CisgICAgCisgICAgY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHSW1hZ2UoSW1hZ2VBbmltYXRpb25PYnNlcnZlciop
OworICAgICAgICB+U1ZHSW1hZ2UoKTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgSW50U2l6
ZSBzaXplKCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgCitwcml2
YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIAorICAgICAgICBTVkdEb2N1bWVu
dCogbV9kb2N1bWVudDsKKyAgICAgICAgT3duUHRyPFBhZ2U+IG1fcGFnZTsKKyAgICAgICAgUmVm
UHRyPEZyYW1lPiBtX2ZyYW1lOworICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX2ZyYW1lVmll
dzsKKyAgICAgICAgSW50U2l6ZSBtX21pblNpemU7CisgICAgfTsKK30KKworI2VuZGlmIC8vIFNW
R19TVVBQT1JUCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcv
U1ZHSW1hZ2VFbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N2Zy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdmcvU1ZHSW1hZ2VFbXB0eUNsaWVudHMuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlk
ZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdJbWFnZUVtcHR5Q2xpZW50
c19ICisjZGVmaW5lIFNWR0ltYWdlRW1wdHlDbGllbnRzX0gKKworI2lmZGVmIFNWR19TVVBQT1JU
CisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVu
dC5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCisKKy8qCisgVGhpcyBmaWxlIGhvbGRzIGVtcHR5IENsaWVudCBzdHVicyBmb3IgdXNl
IGJ5IFNWR0ltYWdlLgorIFNWR0ltYWdlIG5lZWRzIHRvIGNyZWF0ZSBhIGR1bW15IFBhZ2UtPkZy
YW1lLT5GcmFtZVZpZXcgdHJlZSBmb3IgdXNlIGluIHBhcnNpbmcgYW4gU1ZHRG9jdW1lbnQuCisg
VGhpcyB0cmVlIGRlcGVuZHMgaGVhdmlseSBvbiBDbGllbnRzICh1c3VhbGx5IHByb3ZpZGVkIGJ5
IFdlYktpdCBjbGFzc2VzKS4KKyAKKyBTVkdJbWFnZSBoYXMgbm8gd2F5IHRvIGFjY2VzcyB0aGUg
Y3VycmVudCBQYWdlIChub3Igc2hvdWxkIGl0LCBzaW5jZSBJbWFnZXMgYXJlIG5vdCB0aWVkIHRv
IGEgcGFnZSkuCisgU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
NzEgZm9yIG1vcmUgZGlzY3Vzc2lvbiBvbiB0aGlzIGlzc3VlLgorIAorIElkZWFsbHksIHdoZW5l
dmVyIHlvdSBjaGFuZ2UgYSBDbGllbnQgY2xhc3MsIHlvdSBzaG91bGQgYWRkIGEgc3R1YiBoZXJl
LgorIEJyaXR0bGUsIHllcy4gIFVuZm9ydHVuYXRlLCB5ZXMuICBIb3BlZnVsbHkgdGVtcG9yYXJ5
LgorKi8KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbXB0eUNyb21lQ2xpZW50
IDogcHVibGljIENocm9tZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHRW1wdHlD
cm9tZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSB7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7
IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0
KCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpIHsgcmV0dXJuIEZs
b2F0UmVjdCgpOyB9CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBzY2FsZUZhY3RvcigpIHsgcmV0
dXJuIDFmOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVuZm9jdXMoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRv
dyhjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFn
ZSogY3JlYXRlTW9kYWxEaWFsb2coY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBj
YW5SdW5Nb2RhbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFs
KCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpIHsgfQorICAgIHZp
cnR1YWwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBtZW51YmFyVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgdmlydHVh
bCB2b2lkIHNldFJlc2l6YWJsZShib29sKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgRnJhbWUqIGZyYW1lKSB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgdmlydHVh
bCB2b2lkIGNsb3NlV2luZG93U29vbigpIHsgfQorfTsKKworY2xhc3MgU1ZHRW1wdHlGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+U1ZHRW1wdHlGcmFtZUxvYWRlckNsaWVudCgpIHsgIH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzV2Vi
VmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCisg
ICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gLy8g
ZGl0dG8KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQmFja0ZvcndhcmRMaXN0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRCYWNrRm9yd2FyZExpc3Qo
KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcHJvdmlzaW9uYWxJdGVtSXNUYXJnZXQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBsb2FkUHJvdmlzaW9uYWxJ
dGVtRnJvbVBhZ2VDYWNoZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDdXJyZW50SXRlbVBhZ2VDYWNoZSgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgbWFrZURvY3VtZW50VmlldygpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyNpZiBQTEFURk9STShN
QUMpCisgICAgdmlydHVhbCB2b2lkIHNldERvY3VtZW50Vmlld0Zyb21QYWdlQ2FjaGUoTlNEaWN0
aW9uYXJ5ICopIHsgfQorI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIHsgfQorICAgIAorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCkgeyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUhpc3RvcnlGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvclJlbG9hZCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUhpc3RvcnlGb3JJbnRlcm5hbExvYWQoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlSGlzdG9yeUFmdGVyQ2xpZW50UmVkaXJlY3QoKSB7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIExvYWRF
cnJvclJlc2V0VG9rZW4qIHRva2VuRm9yTG9hZEVycm9yUmVzZXQoKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlc2V0QWZ0ZXJMb2FkRXJyb3IoTG9hZEVycm9yUmVzZXRUb2tlbiop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb05vdFJlc2V0QWZ0ZXJMb2FkRXJyb3IoTG9hZEVycm9y
UmVzZXRUb2tlbiopIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJl
bnQxKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hlZEZyb21QYXJlbnQ0KCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGxvYWRl
ZEZyb21QYWdlQ2FjaGUoKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkKFJlc291cmNlSGFuZGxlKiwgTlNVUkxSZXF1ZXN0ICosIE5TVVJMUmVz
cG9uc2UgKikgeyB9CisgICAgCisgICAgdmlydHVhbCBpZCBkaXNwYXRjaElkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TVVJMUmVxdWVzdCAqZGlzcGF0Y2hXaWxsU2VuZFJl
cXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBpZCBpZGVudGlmaWVyLCBOU1VSTFJlcXVlc3QgKiwgTlNV
UkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExv
YWRlciosIGlkIGlkZW50aWZpZXIsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoRG9jdW1lbnRMb2FkZXIqLCBpZCBpZGVudGlmaWVyLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShEb2N1bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIsIE5TVVJMUmVzcG9uc2UgKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRM
b2FkZXIqLCBpZCBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBpZCBpZGVu
dGlmaWVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1
bWVudExvYWRlciosIGlkIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqLCBOU1VSTFJlcXVlc3QgKiwgTlNVUkxSZXNwb25zZSAqLCBpbnQgbGVuZ3Ro
KSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBk
b3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbENsb3NlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCkgeyB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
KyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIHsgfQorICAgIAorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoTlNVUkxS
ZXF1ZXN0ICopIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFNob3coKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5
RnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyB9CisjZW5kaWYK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSB7IH0KKyAgICAKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2Fk
TWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
TG9hZGluZ0Zyb21QYWdlQ2FjaGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNMb2FkaW5nRnJvbVBhZ2VDYWNoZShEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVy
KikgeyB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1l
bnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyNlbmRp
ZgorICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuYXJjaGl2aW5nU3RhdGUoRG9jdW1lbnRMb2FkZXIq
KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NTdGFydGVkKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHByb2dyZXNzQ29tcGxldGVkKCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQcm9ncmVzcyhpZCBpZGVudGlmaWVyLCBO
U1VSTFJlc3BvbnNlICopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQcm9ncmVzcyhp
ZCBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29t
cGxldGVQcm9ncmVzcyhpZCBpZGVudGlmaWVyKSB7IH0KKyNlbmRpZgorICAgIAorICAgIHZpcnR1
YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpIHsgfQorICAgIAorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSB7IH0KKyNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmly
dHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
KSB7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxTZXR1cEZvclJlcGxhY2UoRG9jdW1l
bnRMb2FkZXIqKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJu
IFJlc291cmNlRXJyb3IoKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigp
OyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdEZvclBvbGljeUNoYW5nZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisgICAg
dmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisgICAgCisgICAgdmlydHVh
bCBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiBmYWxz
ZTsgfQorI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9v
bCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgYm9vbCB3aWxsVXNl
QXJjaGl2ZShSZXNvdXJjZUxvYWRlciosIE5TVVJMUmVxdWVzdCAqLCBjb25zdCBLVVJMJiBvcmln
aW5hbFVSTCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgYm9v
bCBpc0FyY2hpdmVMb2FkUGVuZGluZyhSZXNvdXJjZUxvYWRlciopIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlbmRpbmdBcmNoaXZlTG9hZChSZXNvdXJj
ZUxvYWRlciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckFyY2hpdmVkUmVzb3VyY2VzKCkg
eyB9CisgICAgCisgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNv
bnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJM
U2NoZW1lKSBjb25zdCB7IHJldHVybiAiIjsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBmcmFt
ZUxvYWRDb21wbGV0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgeyB9CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVybiBuZXcgRG9jdW1lbnRMb2FkZXIocmVxdWVz
dCk7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBLVVJMJikgeyB9CisgICAgCisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KCkgeyByZXR1cm4gIiI7IH0KK307CisKK2NsYXNzIFNWR0VtcHR5RWRpdG9yQ2xpZW50IDogcHVi
bGljIEVkaXRvckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHRW1wdHlFZGl0b3JD
bGllbnQoKSB7ICB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSB7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKEhUTUxFbGVt
ZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0gCisgICAgdmlydHVhbCBib29sIGlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgeyB9CisgICAgdmlydHVhbCBpbnQgc3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWcoKSB7IHJldHVybiAtMTsgfQorICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgdmly
dHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVkaXRv
ckluc2VydEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAvLyAgdmlydHVhbCBib29sIHNo
b3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiByZXBsYWNpbmdSYW5nZSwgV2ViVmlld0luc2Vy
dEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0
VGV4dChTdHJpbmcsIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSog
ZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZSwgTlNTZWxlY3Rpb25BZmZpbml0eSwgYm9vbCBzdGls
bFNlbGVjdGluZykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBw
bHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlVHlwaW5nU3R5bGUoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogZnJvbVN0eWxlLCBDU1NTdHlsZURlY2xhcmF0aW9uKiB0b1N0eWxlKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIC8vICB2aXJ0dWFsIGJvb2wgZG9Db21tYW5kQnlTZWxlY3RvcihTRUwg
c2VsZWN0b3IpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgLy8KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QmVnaW5FZGl0aW5nKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250
ZW50cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgeyB9CisgICAgLy8g
IHZpcnR1YWwgdm9pZCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGU6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uIHsgfQorICAgIC8vICB2aXJ0dWFsIHZvaWQgd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24geyB9CisgICAgLy8gIHZp
cnR1YWwgTlNVbmRvTWFuYWdlciogdW5kb01hbmFnZXJGb3JXZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldyB7IHJldHVybiAwOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSB7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwg
dm9pZCB1bmRvKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSB7IH0KKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlY29tZSBTZWxlY3Rpb25D
b250cm9sbGVyOjp0b1dlYkFyY2hpdmUoKQorICAgIHZpcnR1YWwgTlNEYXRhKiBkYXRhRm9yQXJj
aGl2ZWRTZWxlY3Rpb24oRnJhbWUqKSB7IHJldHVybiAwOyB9IAorICAgIAorICAgIHZpcnR1YWwg
TlNTdHJpbmcqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMKikgeyByZXR1cm4gMDsgfQorI2VuZGlm
CisgICAgCit9OworCitjbGFzcyBTVkdFbXB0eUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIENv
bnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdFbXB0eUNvbnRleHRN
ZW51Q2xpZW50KCkgeyAgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgp
IHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDdXN0b21Db250ZXh0TWVudUl0ZW1zKENv
bnRleHRNZW51KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgeyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGNvcHlJbWFnZVRvQ2xpcGJvYXJkKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtp
bmcoKSB7IH0KKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHNlYXJj
aFdpdGhTcG90bGlnaHQoKSB7IH0KKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKKworI2VuZGlmIC8vIFNWR0ltYWdlRW1wdHlDbGllbnRzX0gKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXdpdGgtb2Zmc2V0cy1leHBlY3RlZC5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXdpdGgtb2Zmc2V0cy1l
eHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFD
YWRvSndBQUFnQUVsRVFWUjRuTzNkZVpDY2RaMzQ4YzhjeWN6awpQa2dDU0VnQ3lSb3VrWnNOS0Fi
eHdFMlVDaUlJVW9MTG9iSnVLUnN0Y1JXVVJSRGxpUHNycnNpQ0ZndExBbVZrY1Rua0Vvd2dpRUUy
ClFKQWtnQklnOXpXVHVUTEg3NDlzaHB3emt6RDVkTS93ZWxYbGo4d3ozZjN0Ny9OMDB1L3U1eWhw
YlcxdERRQUFnQVNsaFI0QUFBRHcKM2lGQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFZ2pRQUFB
Z0RRQ0JBQUFTRk5lNkFFQTlHUS9lbTU1b1lmQUpyNTl5RzZGSGdMQQplNTV2UUFBQWdEUUNCQUFB
U0NOQUFBQ0FOQUlFQUFCSUkwQUFBSUEwQWdRQUFFampOTHdBUlAzNmtxaHVLSXZWdFdXeHFyWXNW
dFdXCng1cTYwcWhwS0l1R3BwSzIzNnNvYjQxK0ZjMHhzS29sQnZkcGlzRjltbU5RbitZWTBxYzV5
a3BiQy9nTUFPZ3VCQWpBZTFCMWZWa3MKWGxzZUM1WlZ4T3NyZW5mNmRnMU5KZEhRVkI0cjFrVkVi
SDI3MFVNYlkreXdodGg5UUZQMHIyenV1Z0VEMEdNSUVJRDNpT3I2c3BpLwpySGM4L1ZyZlhmWVly
Ni9vdlZuUUhEVm1YWXdiMWloR0FHZ2pRQUI2dU5kWDlJN2ZMK3diYSt2TDBoLzc2ZGY2eHRPdjlZ
MEJsYzF4CnpMN3JZdlRReHZReEFGQmNCQWhBRDlUY1VoSi9XVklSajgvdlYraWhSRVRFMnZxeXVQ
L0ZBUkVSY2R5NG1uai9pQWJIakFDOFJ3a1EKZ0I1bS90S0tlUGpsL29VZXhuWTlQcjlmUEQ2L1g1
d3d2anJHRFc4bzlIQUFTQ1pBQUhxSVpUWGxjZS8vRHR6c3JGWEY3T0dYKzhmdgpGdlNMeVI5WUU4
UDZOUlY2T0FBa2NSMFFnRzZ1dWFVa25ueTFiOXc5WjFDM2lZK05HcHBLNHU0NWcrTEpWM2ZkZ2ZF
QUZCZmZnQUIwCll5dHJ5MkxHczRNTFBZeDM3ZmxGVmZIOG9xbzQ5ZkJWTWFTUE0yWUI5R1MrQVFI
b3B1WXZyZWdSOGJHcEdjOE9qdmxMS3dvOURBQjIKSVFFQzBBMDkrV3Jmb2o3US9OMTQrT1grZHNr
QzZNRUVDRUEzOCtCTEErTDVSVldGSHNZdTlmeWlxcmJUOWdMUXN3Z1FnRzZpdWFVawpmdlg4d0ho
MWVlK09mN2tIZUgxRjcvalY4d09qdWFWN0hWZ1BRUHNFQ0VBM2NlL2NBZkgybWw2RkhrYXF0OWYw
aW52bkRoQWhBRDJJCkFBSG9CdTUvOGIwWEh4dTl2YVpYL0daZXp6emVCZUM5U0lBQUZMa25YKzBi
cjY5NGIreDJ0VDJ2citqdHdIU0FIa0tBQUJTeCtVc3IKZXZ3QjU1MzEvS0lxcCtnRjZBRUVDRUNS
V2xsYjFtTlB0YnV6SG42NWY2eXNMU3YwTUFCNEZ3UUlRQkZxYmlucGNSY1o3Q3JtQmFCNwpFeUFB
UmVqcDEvc1VlZ2hGemZFZ0FOMlhBQUVvTXN0cXloMzMwWUhuRjFYRnNwcnlRZzhEZ0owZ1FBQ0t6
TDMvTzdEUVErZ1d6Qk5BCjl5UkFBSXJJL0tVVjBkRGtvbnVkMGRCVTRxeFlBTjJRQUFFb0VzMHRK
YzU2dFlNZWZybS9xNlFEZERNQ0JLQkkvR1dKVC9OM2hua0QKNkY0RUNFQ1JlSHgrdjBJUG9Wc3li
d0RkaXdBQktBS3ZyK2hkNkNGMGErWVBvUHNRSUFCRjRQY0xYZGZpM1RCL0FOMkhBQUVvc09yNgpz
bGhiWDFib1lYUnJhK3ZMb3RvY0FuUUxBZ1Nnd09ZdnMvdFFWekNQQU4yREFBRW9zS2Rmcy90UVZ6
Q1BBTjJEQUFFb0lMc05kUzN6CkNWRDhCQWhBQVMxZVcxN29JZlFvNWhPZytBa1FnQUphc014RjlM
cVMrUVFvZmdJRW9JQmN2NkpybVUrQTRpZEFBQXFrZm4xSm9ZZlEKSTVsWGdPSW1RQUFLcExyQkFk
TzdnbmtGS0c0Q0JLQkFWdGQ2bzd3cm1GZUE0aVpBQUFwa2xUZkt1NFI1QlNodUFnU2dRRmFzYzhy
WQpYV0ZWclhrRktHWUNCS0JBcXV2OUU3d3JyS2t6cndERnpML1NBQVZTNDJEcFhjSzhBaFEzQVFK
UUlBMU5UaGU3SzVoWGdPSW1RQUFBCmdEUUNCQUFBU0NOQUFBcWtvcnkxMEVQb2tjd3JRSEVUSUFB
RjBxK2l1ZEJENkpITUswQnhFeUFBQlRLd3FxWFFRK2lSK2xlYVY0QmkKSmtBQUNtUnduNlpDRDZG
SEd0clh2QUlVTXdFQ1VDQ0QrOWhWYUZjd3J3REZUWUFBRk1nZ2I1UjNDZk1LVU53RUNFQ0JEUEZH
ZVpmbwo3eUIwZ0tJbVFBQUtwS3pVNldKM2hjcGU1aFdnbUFrUWdBSWFQYlN4MEVQb1Vjd25RUEVU
SUFBRk5IWllRNkdIMEtPWVQ0RGlKMEFBCkNtajNBVTRaMjVYTUowRHhFeUFBQmRTLzBnSFRYY2w4
QWhRL0FRSlFZRWVOV1Zmb0lmUUk1aEdnZXhBZ0FBVTJicGdEcDd1Q2VRVG8KSGdRSVFJSDFyMnlP
QVhZZGVsY0dWRGJiL1FxZ214QWdBRVhnbUgzdFB2UnVtRCtBN2tPQUFCU0JrWVBYRjNvSTNacjVB
K2crQkFoQQpFU2dyYlkzanh0VVVlaGpkMG5IamFseFZIcUFiRVNBQVJlTDlJMXhFYjJlWU40RHVS
WUFBRklteTB0WTRZWHgxb1lmUnJad3d2dHEzCkh3RGRqQUFCS0NMamhqZEVSYmszMUoxUlVkNGE0
NGI3OWdPZ3V4RWdBRVZtOGdmV0ZIb0kzWUo1QXVpZUJBaEFrUm5XcnlrTzNxdXUKME1Nb2FnZnZW
UmZEK2pVVmVoZ0E3QVFCQWxDRWpocGRXK2doRkRYekE5QjlDUkNBSWxSVzJocW5IcjZxME1Nb1Nx
Y2V2c3FCNXdEZAptQUFCS0ZKRCtqUTdLOVlXVGhoZkhVUDZOQmQ2R0FDOEN3SUVvSWlORzk3Z2VK
RC9jL0JlZGM1NkJkQURDQkNBSWpkaG4zVXhlbWhqCm9ZZFJVR04yYTR3Sis2d3I5REFBNkFJQ0JL
QWJPUEdBdGJISHdQV0ZIa1pCN0RGd2ZYek1ybWdBUFlZQUFlZ21KaC8wM291UVBRYXUKajVNT1h1
T2djNEFlUklBQWRCTmxwYTF4MHNGcjNqTzdZNDNaclRFbUg3UzIwTU1Bb0lzSkVJQnU1c1FEMXZi
NEE5TVAzcXN1UHJuLwpXdDk4QVBSQUFnU2dHNXF3ejdvZWU0cmVFOFpYTytBY29BY1RJQURkMUxq
aERUM3VZb1duSHI3S3FYWUJlcmp5UWc4QWdKMDNwRTl6CmZPWER5K1BKVi92Rzg0dXFDajJjblhi
d1huVngxT2hhdTF3QnZBY0lFSUFlWU1JKzYyTGM4SWE0OTM4SFJrTlRTYUdIMDJrVjVhMHgKK1FO
cllsaS9wa0lQQllBa2RzSGFCWll1WFJxUFB2cG9yRnk1c3N2dnU2NkQ0MDQ3V3Q0WjFkVVJmL2hE
ODFiM3RXcFZhelIxOFh1RQo5dVpxeFlvVk1YLysvSjIrNytibTVuajU1WmZmemZEZXRVV0xGaFgw
OGJkVVUxTVRiN3p4UnFHSEVSSEZOemM3b2hpMnJXMFoxcThwCnZqUmhSYmM1TnVTRThkWHhwUWty
eEFmQWUweUhBVEp6NXN6WWI3LzlvcVNrSkNaT25CZ1BQL3h3eHJpNnJlblRwOGVkZDk0Wmp6LysK
ZUJ4d3dBSFIwTkExK3pJdlh0d2FYLzk2WFV5YVZMTkR5OWV2anhnK2ZFMlVsS3phN0U5cDZlcDQr
KzNOZDNWNDZhV1dPUG5rZFhIcgpyUTJ4OTk2bFVmVi9lM1BNbjk4U24vdmN1cmo3N3ZYeDNlL1d4
U1dYMUhkNjNQZmZmMytjY01JSlVWSlNFbVBIam8wYmJyaWhiVmxICmMzWHh4UmZIU1NlZDFPbkgy
dFFmLy9qSCtPQUhQeGpublhmZVR0MitLOHliTnk4T1BQREFnajMrbHU2NDQ0NFlNV0pFM0hiYmJZ
VWUKU3RITnpZNG9obTJySStPR044UjV4NjZJNDhadCs5K0xRanR1WEUxODVjUExIZXNCOEI3VjRT
NVluL3ZjNTJMaHdvWHhuZTk4Snk2Ngo2S0k0NFlRVE1zYTF3eG9hR3VMSko1K01pUk1uN3RUeXJu
aU1kZXZXeFlVWFhoaHIxNjZOMHRMUytNUW5QaEVWRlJVNy9YZ2JWVmRICnZQSktjenovZkhNME5H
eTlmM1I3eSsrNnF6Rys5cldLK09RbmU4WEdvYno0WWt0Y2UyMTk3TEhITzd0cC9PeG5qWEhaWlhY
eDJHUDkKWTU5OVNqZTc3OG1UYStMS0s2dmlNNS9wRlJFUnh4eFRIZTk3WDJtY2QxN3ZEc2QrNG9r
blJsVlZWVHp5eUNQeGhTOThJYjd5bGE5RQpST2ZtNnRKTEw5M3NtNUVkV1lkSEhIRkVmT1FqSDRt
WFhucXB3OS9kVllZTUdSS0RCdzl1KzN0WGJJUHZ4dW1ubng2WFhYWlpRUjU3ClMxdk9UWGRTRE50
V1o1U1Z0c2IrZTlUSC9udlV4K3NyZXNmdkYvYU50ZlZsQlJ2UGdNcm1PR2JmZFRGeThIckhlUUM4
eDNWcUY2eEIKZ3daRlJNVEFnUU03ZGFkTlhiMmZUZ2ZXcjE4Zlo1NTVadnp1ZDcvYnFlWGIwOXI2
em4rU25ibVB1WFBuUm1Oalk1U1dicGpXQ1JNbQo3TkRqYlUvLy9oRWYvbkI1akI5ZkdpWGIyTFc3
dmVYSEhsc2UzL3RlWlJ4eFJGbDg0QU1iL3J6eVNuTmJURVJFeko3ZEZCZGNVQnN6Clp2VGJMRDRp
SW02L3ZUR1dMMitOeVpQZitmMnp6NjZJU3krdGkrYm16bzEvNHh2TlRkOXdkbWF1aGc0ZEd1UEdq
WXVJSFZ1SExTMHQKRVJGUlhsN2VkdjlkWmROdG9pTWpSb3lJOGVQSFI4VE9iNE9kMGQ3cmJjdng5
dXJWSzBxMnRSRWwyM1J1dXRLT3JKK2RzU3UzclYxcAo5TkRHT09QSVZmR0ZJMWZGVVdOeVQyOTcx
SmgxOFlValY4VVpSNjZLMFVNYnhRY0FYWHNRK2lPUFBCTFBQdnRzbEpTVXhEMzMzQk0zCjNYUlRI
SGpnZ1hISEhYZkVEMy80d3hnOWVuUmNmZlhWTVg3OCtKZzdkMjZjZDk1NWNmbmxsOGZFaVJPanBx
WW12djN0YjBkRlJVVXMKWExndzl0NTc3N2p5eWl1anFxb3Fac3lZRVJkZWVHRjgrOXZmanE5OTdX
dHg1NTEzeGlXWFhCSVRKMDZNRzIrOE1hWk5teGIvL2QvLwpIUXNXTElpRkN4Zkc5ZGRmSDMzNzlt
MGIxN2FXMTlUVXhKVlhYaGwvK3RPZm9xYW1KcTY3N3JvNCt1aWpJeUppeG93WnNYTGx5bGk3CmRt
M2NjODg5OGVTVFQzYjRHRGZmZkhQY2ZmZmQwZFRVRkJkY2NFRlVWVlhGVlZkZDFlN3ptak5uVHR4
MDAwMHhiTml3cUtxcWltblQKcHNYLy9NLy94SkZISHRsbDYyVHZ2YmQra3pScjF2cTQvZlozeHY3
NXo2K0xJNDhzaTZhbTF2aC8vNjhoRGppZ0xJNC9mc09tY2YvOQo2MlBjdU5MWTlMM1d1SEdsOGVh
YkxmSGNjODF4K09FNy9vbnE5dVpxVTIrLy9YYmNkdHR0TVd2V3JIanFxYWM2blArSWlOcmEycGc2
CmRXcnN2dnZ1OGRaYmI4V0xMNzRZbFpXVmJjdmJXeGNSRVV1V0xObWhiZUt4eHg2TG0yNjZLZmJh
YTYvWWI3Lzk0dkxMTDQ5ZXZYckYKL2ZmZkgyUEdqSW1JaU9PT095NGl0cjBOYmpuK3VycTZ1T3l5
eTJMQWdBRXhaODZjT09LSUkyTHExS25iM1U2cXE2dTMrWHJiM25nMwphbWxwaVlzdnZqaCsvdk9m
eDRBQkErTGVlKzl0RzI5N2Z2bkxYOGI1NTU4Znh4NTdiTng2NjYzeHExLzlLcjc1elcvR0J6LzR3
YmpoCmhodGk3Tml4Y2MwMTE4U3NXYlBpb1ljZWlzckt5bmJuZE9QY2JPLzVqUm8xYXJ1MzNWSnRi
VzE4NjF2Zml1SERoOGZzMmJOanlKQWgKY2NnaGg4U0VDUlBpUXgvNlVJZnJ2cVBsSFcxYjNVWC95
dVk0ZEdSZEhEcXlMcXJyeTJMeDJ2SllzS3dpWGwvUjhiZVpuVFY2YUdPTQpIZFlRdXc5b2l2NlZu
ZnlVQW9EM2xDNExrTWJHeHZqaUY3OFl0OTEyVzB5Y09ESHE2dXJpKzkvL2Z0eDk5OTF4K3Vtbngw
MDMzUlNOCmpZMXRuM3J1di8vKzhiNzN2YTl0ZDVSLytJZC9pSFBPT1NmT1BQUE1XTDkrZlJ4NzdM
SHh1Yzk5THU2OTk5NDQ5ZFJUNDEvKzVWK2kKdW5yRGdaV25uWFphM0hycnJXMjc1M3p6bTkrTTY2
Ky9QazQ1NVpTNDZLS0x0aHJibHN1Ym01dmpsRk5PaVJrelprVGZ2bjNqcTEvOQphbno2MDUrT1Yx
NTVKZnIxNnhkWFhYVlYvUEdQZjR5SURXOUtXMXBhT255TWM4NDVKd1lPSEJnUFBmUlFYSGZkZFcw
L2IrOTVOVFkyCnhsMTMzUldqUm8ySzczNzN1M0h5eVNmdjh0MVNYbjIxSmRhdGE0MEREdGhRRksr
OTFoS0xGclhFcUZHbDhlS0xMZkhHR3kweGRXcGQKZlBuTEZmSFRuMWJGMjIrM3hKQWhtMzlpM3Iv
L2hyOHZXdFN5VXdHeXZibmFWSGw1ZWJ6MjJtdXhZTUdDaU9oNEhVZHMyRjN3ekRQUApqRk5QUFRW
YVdscGk1TWlSY2NBQkI3UXRiMjlkTkRjM3g5bG5uNzFEMjhUKysrOGZ6ejMzWER6Ly9QUHhrWTk4
SkI1OTlOSDR4Q2MrCkVWZGNjVVZNbno2OTdibDJkdnhUcGt5SlN5NjVKSTQrK3VqNDA1LytGSWNm
Zm5nY2YvengyOXhPK3ZidEcxT21UTm5tNjYycHFXbWIKNDkzNGlmMWRkOTBWVjE5OWRaeDMzbm54
c1k5OUxDNi8vUEw0MmM5KzF1RjZtekpsU3Z6d2h6K01JVU9HeEtCQmcrS3NzODZLWC96aQpGekZ5
NU1nWU8zWnNSRVNNSHo4Ky92RWYvekVxS3l2Ym5kTkJnd2ExemMyMm50K0FBUVBhdmUyV2Jybmxs
cWlzckl5TEw3NDRYbmpoCmhUam9vSVBpMEVNUGpiMzMzcnZEZGQrWjVSMXRXOTFSLzhybTZGL1oz
SFljUm5OTFNheXNMWXZWdFdXeHFyWXNWdFdXeDVxNjBxaHAKS052c3JGb1Y1YTNScjZJNUJsUzF4
SkErVFRHNFQzTU02dE1jL1N1YW83S1hiemNBNkZpWEJVaXZYcjFpeXBRcGNmREJCMGZFaHQxbgo1
czJiMTdiOEc5LzRSa3laTWlWZWUrMjFHRE5tVE15ZVBUdE9QUEhFaUloNDRJRUhZdmJzMlcwSHVQ
ZnExU3UrOUtVdnhaZS8vT1Y0CjZxbW40dS8vL3UranFxcHFzMTFIK3ZUcHM5V3VKQjN0V3JKeCtj
eVpNNk8xdGJWdGQ1Zzk5dGdqbGkxYkZrODg4VVJNbURBaC92em4KUDhkOTk5MFhuL3JVcCtMY2M4
L2RiTGVPSGRsOXBUUFBhL3o0OFRGNjlPZzQrZVNUNCtTVFQrNzBmZStzV2JQV2I3YjcxWi8rdE9F
VAp5bXV2N1JOSEhMRWhKdnIyTFlrZi9LQSt6ajIzSXVycVdxTlhyODIvUmVuZGU4TWNyRisvNjhZ
NWJOaXdPT2lnZytLdXUrN2E3T2ZiCm0vOC8vT0VQY2Q5OTk4Vi8vdWQvUmtSRWFXbHBmT3BUbjRx
Ly92V3ZFZEh4dW5qOTlkZDNlSnNZTVdKRTdMdnZ2dEd2WDcrWU5HbFMKUkVRY2Yveng4ZUtMTDdh
TmE3ZmRkdXZVK0I5OTlORjQ3cm5uNHFpampvcUlpTU1PT3l4dXZQSEdHRFZxVkF3ZE9uU3I3YVMx
dFhXNwpyN2ZWcTFlM3V3MVBtalFwUHZyUmowWkV4TVNKRTJQdTNMbnRyb3ROblgzMjJmR2pILzJv
TFdoT09PR0VtRFp0V2pRMU5VVjVlWGs4Ci9QREQ4Vy8vOW04UjBmN3I3Tk9mL25UYjNCeDk5TkZi
UGIvLytxLy9hdmUyVzdydHR0dmFUbGh3NElFSHhyQmh3eUlpWXRTb1VSMnUKK3pWcjFyUzd2S1Nr
cE4xdHE2Y29LMjJOWWYyYW5KRUtnRjJ1eTNaaUxpa3BpWC8vOTMrUDFhdFh4NVZYWGhtUFAvNTQy
emNXRVJHVApKMCtPa1NOSHRuMHkvT3RmLzdydERmY3p6endUdzRZTmkxNjkzbmxqdkhFM3BPZWVl
MjZIeHRDWjVVODk5VlFNSFRvMGV2ZnVIYjE3Cjk0NWpqamttSG5yb29UanNzTU5pdDkxMml5bFRw
c1RreVpQamdnc3VpTkdqUjBkWldkbFc5OUVablhsZVZWVlZiVytXTXN5YTFSZ24KbmZUT2VGYXUz
UERHZE96WWR6YUZVMDdwSGEydHJmSDAwMDJ4Kys2bHNYSmx5MmIzc1c3ZGh0dU1HN2RyOTRFdktT
bnBkR1QrOXJlLwpqZkhqeDIvMjZYaS9mdjNhZnIramRiR3oyOFNXWSt6ZnYzL1UxMi8vTEdIYkcv
L0cwTmwwK2Zubm54OURodzZOaUsyM2svWmVienV5CkRROGVQRGhxYWpwL3BxVFBmLzd6c1d6WnNy
WXdlT0dGRjJMZHVuWHh5Q09QUkgxOWZiUzB0TFR0V3RiZW5HNXB5K2UzSTdlTjJERHYKVHozMVZO
dmZkOTk5OTdhWTYyamRkN1M4bzIwTEFOZ3hYWG9NeUUwMzNSU3paOCtPVzI2NUpXNisrZVo0NXBs
bjJwYVZsWlhGVjc3eQpsWmcyYlZyODRBYy9pTHE2dXJiLzBHdHJhMlA1OHVWUlUxTVQvZnIxaTRp
SWd3NDZLTXJMeTJQZHVxNC9ZSEw1OHVWUlhsNiszVE42CjNYSEhIYkhubm52R1QzLzYwNWd6WjA0
OCtPQ0RNV0RBZ0IxK25Pem4xWkVsUzFwajRjS1dtRERobmRVK1pzeUdpRmkwcUNVR0Q5N3cKSm5Y
czJOSW9LeXVKbXByVzJHdXYwcGc5ZS9OUFJHdHFOZ1pJNGM2b3M2VkZpeGJGOHVYTHQvcjV4amVK
SGEyTHJHMWllNVlzV1JJdgp2UERDRHQybXZkZmJyaHJ2MEtGRFk5S2tTWEg3N2JmSG9FR0Q0dkRE
RDQvUzB0SzQ4ODQ3WTgyYU5adWROcm1qT1czUGp0NzJHOS80ClJweDExbGt4ZCs3Y3FLaW9pRDU5
K3JRZFk5TFJ1dTlvZVVmYkZnQ3dZOTcxUjlodnZ2bG0zSExMTGZIU1N5L0ZWNy82MWJqcXFxczIK
K3lSeFUrZWNjMDZzWHIwNnZ2T2Q3OFNIUHZTaHRwK1BIejgrbXB1YjIvWlpqOWh3Z2JxbXBxYlli
Ny85Mm42MjhRdzAyOVBaYjBERwpqQmtURHozMDBHYWZWTGUydHNadmYvdmJXTHg0Y1N4ZHVqU3V2
ZmJhZU9DQkIyTHUzTGx4NTUxM2R2b3hOdFhaNTVYbG5udld4NmMrCjFXdXpBOG9QUGJRcyt2WXRh
ZHNWS3lLaXVybzFtcHRiWS8vOXkrS2trM3JGNHNVdG01M3g2aTkvYVk0RER5eUxMWTZoVHJHOStk
OXoKenoxajJiSmw4Y29ycjJ4emVVZnI0dDFzRTEweC9sR2pSc1g4K2ZOajRjS0ZtejMrOXI0QmJP
LzExcFhqM1phenpqb3I3cnJycnZqWgp6MzRXNTV4elRweDk5dGt4YTlhc2VQamhoOXZlOUVlMC96
cnJ5STdlZHVPdVpnODg4RUE4Kyt5ejhkaGpqN1V0NjJqZGQ3UzhvMjBMCkFOZ3huUXFRVmF0V1Jj
VFdBZERRMEJEbm5YZGVISExJSVRGdjNyeG9hV21KbDE1NktacWJtK1B4eHgrUCt2cjZhRzF0YmR2
L2ZMZmQKZG92VFRqc3RwaytmSHBNblQyNjduMU5PT1NYMjJtdXZlT2loaDlwKzl1eXp6OGI0OGVQ
ams1LzhaRVJzK0VUeTZhZWZqc2JHeG5qcgpyYmRpNGNLRnNXTEZpcmJmSHpSb1VOdVZsVGVPZDFP
YkxwODBhVklzV2JJa3pqLy8vRmkxYWxVc1hibzBMcjMwMGhnM2JseXNXTEVpClpzeVlFUkVSSC8v
NHgrTXpuL2xNMjZlaUhUM0cyclZybzZXbEpXcHJhenY5dkpxYW1xS3VrNWN2YjJpSWFLL0JPbHIr
eTE5dXZ2dFYKUk1UUW9TWHg5YTlYeG05Kzg4NEJIVTgvM1J3SEhGQVdILzFvZVV5YTFDdUdEeStO
bVRQZldmN1lZMDN4MDUvMjJlUnhHK0x5eXkvZgo3cFd0TjU0c1lOTnJlbXc1Vjl0U1cxc2JkWFYx
YmR0UGUvTi82cW1uUm5sNWVkeDQ0NDF0UDN2NTVaZGorZkxsYlNjZGFHOWRuSEhHCkdUdTFUVFEy
Tm03MnVxaXRyWTNtN1p5ZnVLUHhWMVpXeHRsbm54M3o1czJMZWZQbXhiZSs5YTBZT1hKa1JHeTlu
YlQzZWx1K2ZQbDIKeDF0Ylc3dlpuTmZWMVcxMnY5WFYxZkc5NzMwdjVzeVpzNTIxc3VIYUxoVVZG
VkZXVmhZREJ3Nk00NDgvUGdZTUdCQjc3TEhIWm9IVgozcHh1YWN2bnR5TzNqWWo0d1E5K0VILzNk
MzhYLy96UC94eW5uMzU2MjltcklqcCtIWGEwdktOdEs2TGoxd0FBOEk2eTczLy8rOTl2Cjd4ZnV2
dnZ1bURadFdpeGZ2anorL09jL3grOS8vL3VZTVdORzNIenp6VEYxNnRSNCsrMjM0K3FycjQ3Um8w
ZkhmZmZkRjlkZGQxMHMKWExnd1B2LzV6OGZ0dDk4ZUw3Lzhja3lhTktsdEgvUWhRNFpFZFhWMW5I
YmFhVzJQMGJ0Mzc1ZzRjV0pjY2NVVlVWZFhGMnZXckluYgpiNzg5YnJqaGhoZytmSGhFYkRnbyta
cHJyb21iYjc0NTFxNWRHeU5HaklpVksxZkd5SkVqWTh5WU1mSEdHMi9FTmRkY0UzLzcyOTlpCjRz
U0pXNTNpZE5QbHA1eHlTdXl6eno1eDlkVlh4eFZYWEJFLy8vblA0OXh6ejQwamp6d3lsaTFiRmhk
ZWVHRlVWbGJHbTIrK0dXKysKK1daTW5UbzFTa3RMMjMyTXA1OStPbjd5azUvRTMvNzJ0MmhzYkl5
eFk4ZkdpQkVqMm4xZWQ5eHhSMHlmUGozKyt0ZS90bnRXbllhRwppRHZ2Ykl3YmIyeUlWMTl0aVRG
alNtUGt5TktvcWlycDFQS0lpRFZyV3VOYjM2cVA2Ni92RStWYjdIaDMzSEhsOGN3enpmR2IzelRG
CmM4KzF4QzkrMFJoMzNORTNoZzR0aWRMU2lFOS91bGRjZVdWOUxGblNHczgvM3hMRGg1ZkdHV2U4
YzlyTytmUG54MmMvKzlrNCtPQ0QKMnc2SzN1akJCeCtNSC8vNHgvSHFxNi9HVzIrOUZSVVZGZEhV
MUxUVlhHMTU5cTlubm5rbXJyMzIybmoxMVZkajBLQkJjZWloaDhaYgpiNzIxM2ZrZk1tUklqQjA3
Tmk2OTlOSzQ3YmJiNG9rbm5vaVdscFpvYkd5TVBuMzZ4R0dISGRidXVoZzJiRmlNR0RGaWg3YUoy
Yk5uCnh6WFhYQk9MRnkrT1k0NDVKbGFzV0JHWFgzNTVMRml3SUk0NjZxallkOTk5dDdzTmJqbit3
WU1IeDRFSEhoaTMzbnByL09RblA0bGYKLy9yWDhhLy8rcTh4ZnZ6NGJXNG43YjNlamo3NjZKZzZk
ZXBXNDUwMWExWk1uejQ5VnE5ZUhjY2NjMHk4L2ZiYjhlTWYvemdXTEZnUQpoeHh5U0x6Ly9lK1Bl
ZlBteFpsbm5obHo1c3lKYzg4OWQ1dmJZMmxwYVN4WnNpUXV1T0NDR0RKa1NKU1VsTVNxVmF2aWkx
LzhZZ3daCk1xVHQ5OXFiMDAxdDYvbDE5clliM1hQUFBYSFJSUmZGWlpkZEZwZGRkbGxjZi8zMThk
cHJyOFhIUHZheHFLcXFhbmZkZC9UdlQwZmIKMWtFSEhkVHVhMkQyNHUxSE52bU8zYU5QeDc4RXdD
NVYwdHJGVis2cXE2dHIrL1J4L2ZyMVcrMGVNbjM2OUJnOWVuUjgvT01mMytxMgpyYTJ0c1dEQmdp
Z3RMZDNxelZ2RWhrK2JtNXVibzZxcWFwdjN2WHo1OHEzT090VGU4c2JHeG5qampUZGkxS2hSVWY1
Lzc4bzNudDFuCjllclYwYXRYcjYxQ3BxUEgySmFPbmxlRyt2cUlwVXRidG5sZGtFMS9aL1hxMXRo
OTkyM3ZKclJ5WldzTUhseXl6WXNoTGx1MkxPVmcKK283bXY3bTVPVmF0V2hXNzdiWmIxTmZYYjNX
dGhzNXNZenU2VFhUbCtGdGJXMlBwMHFVeFlzU0lUdDNmdGw1djczYThhOWFzaVduVApwc1VsbDF5
eTNkOXBhR2pZN01yMVcvNTlVOXVhMDg3cTdHMnZ1T0tLK094blB4djE5ZlZSWFYwZHExZXZqcGt6
WjhZWHZ2Q0Z0dU5JCk9scjNIUzN2YU52S2VnMEFRSGZYNVFHeVBkWFYxVkZSVVJGbm5IRkd6Snc1
MHdHY25WUlNzdld1WHNXa3RYWFhYcmVFZkxmY2Nrc2MKZWVTUmJSYzFMSGJUcDArUG1UTm50cDFH
ZDZNSEgzd3c5dDEzMzdacmxBQUF4U0VsUUs2Ly92cjRwMy82cDNqZis5NFgvL0VmLzdITgpieitB
NHJCcTFhcGRma0hNcmpSMzd0dzQ0b2dqWXZMa3lYSFlZWWRGWFYxZExGbXlKQ1pObXRSMmZSWUFv
SGlrQk1qS2xTdGp4b3daCjhablBmQ2IyM0hQUFhmMXd3SHZNbWpWcjRva25ub2pGaXhmSHhJa1Rm
ZXNCQUVVc2JSY3NBQUNBWFhzcGF3QUFnRTBJRUFBQUlJMEEKQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQQpB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZ2pRQUJBQURTCkNCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1EKQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFB
QQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBB
QVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEKQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEw
Z2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJB
QURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05B
QUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUEKQU5JSUVBQUFJ
STBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDRE1NRXhvQUFBZXJTVVJCVkJBQUFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEKQUNDTkFB
RUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUEKQU5J
SUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEUwpDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRCkFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUEK
SUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTgpBQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCCkFBRFNDQkFBQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEKMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSQpFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBCkFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWcKalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQQpBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBCkFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFMKQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUQpBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBCklJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJB
QURTQ0JBQUFDQ04KQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05B
QUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQgpBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJ
STBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBCjBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NC
QUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFO
SUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQQpBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnCmpR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEEKQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURT
CkNCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQTBnZ1EKQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBB
QVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFB
Q0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEw
Z2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJB
QURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUFBTkw4CmY3ZmhlMjg3T1lDY0FBQUFBRWxGVGtTdVFtQ0MKCg==
</data>
<flag name="review"
          id="4449"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>