<?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>12159</bug_id>
          
          <creation_ts>2007-01-08 00:56:55 -0800</creation_ts>
          <short_desc>Most of CSSComputedStyleDeclaration, cssparser.cpp, cssstyleselector.cpp should be autogenerated</short_desc>
          <delta_ts>2009-03-05 16:40:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>36352</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-08 00:56:55 -0800</bug_when>
    <thetext>Most of CSSComputedStyleDeclaration, cssparser.cpp, cssstyleselector.cpp should be autogenerated

Hyatt and I were just talking about this over IRC.... most of the CSS code is pretty repetitive (and as a result ugly).  It&apos;s full of copy/paste and macro code which is either prone to errors or difficult to debug.  It would be best to replace most of this CSS code with autogenerated code, similar to what was done with the JS bindings system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36356</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-08 01:42:40 -0800</bug_when>
    <thetext>Is autogeneration the only way to improve CSS code? Maybe it&apos;s just me, but I find autogenerated code to be harder to read and debug than any other kind of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58109</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-10-08 10:40:58 -0700</bug_when>
    <thetext>*** Bug 15427 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58110</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-08 11:07:37 -0700</bug_when>
    <thetext>I&apos;d be happy to discuss specific examples of code that is suggested for auto-generation, hoping to suggest alternatives, e.g. template-based. If there aren&apos;t any, then auto-generation may be a great answer (as it is for IDL-generated bindings).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58173</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-09 12:48:33 -0700</bug_when>
    <thetext>I think that a lot of ugly code can be eliminated by moving enum mapping to CSSPrimitiveValue. E.g.

            switch (style-&gt;resize()) {
                case RESIZE_BOTH:
                    return new CSSPrimitiveValue(CSS_VAL_BOTH);
                case RESIZE_HORIZONTAL:
                    return new CSSPrimitiveValue(CSS_VAL_HORIZONTAL);
                case RESIZE_VERTICAL:
                    return new CSSPrimitiveValue(CSS_VAL_VERTICAL);
                case RESIZE_NONE:
                    return new CSSPrimitiveValue(CSS_VAL_NONE);
            }

could hopefully become

            return new CSSPrimitiveValue(style-&gt;resize());

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58175</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-09 13:28:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think that a lot of ugly code can be eliminated by moving enum mapping to
&gt; CSSPrimitiveValue. E.g.

That&apos;s an interesting idea, but that would mean creating 100 different constructors, no?  Or would you use some sort of template magic to do such?  (If so, please provide an example.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58207</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-09 21:39:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; That&apos;s an interesting idea, but that would mean creating 100 different
&gt; constructors, no?

Yes, I don&apos;t see how to avoid that yet. Still, should save quite a few lines of code.

I&apos;m going to actually work on some patches along these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58507</commentid>
    <comment_count>7</comment_count>
      <attachid>16667</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-14 08:11:47 -0700</bug_when>
    <thetext>Created attachment 16667
Move enum mapping into a separate file

This patch is IMHO helpful regardless of whether we decide to auto-generate any more code.

The CSSComputedStyleDeclaration part is pretty straightforward. In CSSStyleSelector, there was some error checking I don&apos;t quite understand, especially because not all cases have it. I might have removed something important, or kept something unnecessary.

-        if (!primitiveValue || !primitiveValue-&gt;getIdent())
-            return;
...
-    if (!value-&gt;isPrimitiveValue()) return;

It seems that these are guaranteed by the parser. Similarly, some checks for unexpected ident values may have changed, but it doesn&apos;t seem that they actually come into play unless memory is overwritten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58580</commentid>
    <comment_count>8</comment_count>
      <attachid>16667</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-15 07:43:53 -0700</bug_when>
    <thetext>Comment on attachment 16667
Move enum mapping into a separate file

+            ASSERT(boxAlign != BJUSTIFY);
+            if (boxAlign == BJUSTIFY)
+                return 0;

+            ASSERT(pageBreak != PBALWAYS);
+            if (pageBreak == PBALWAYS)
+                return 0;

The checking here seems unnecessary. I think we can just omit it.

Do we have test cases that cover all the different length types and property values?

-        CSSPrimitiveValue* val = new CSSPrimitiveValue(pair);
+        CSSPrimitiveValue* val = new CSSPrimitiveValue(PassRefPtr&lt;Pair&gt;(pair));

I think that needing to do this is quite unfortunate. Because of this, I&apos;m not happy with the template conversion technique. Can we switch to a simpler technique that doesn&apos;t involve templates?

We could just put all the enums into a separate header file and use plain old overloading.

I otherwise think this is cool, and a great direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58640</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-16 00:48:57 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; Can we switch to a simpler technique that doesn&apos;t involve templates?

  I thought plain overloading would be unsafe, because missing constructors wouldn&apos;t be detected - there are already constructors that take int and unsigned.

  One option I thought of (and actually started to implement) was to use a separate construction method, something like

    template&lt;typename T&gt; static CSSPrimitiveValue* fromEnum(T);

  But that looked even worse than having to explicitly construct PassRefPtr in a few places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58646</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-16 07:42:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; 
&gt; &gt; Can we switch to a simpler technique that doesn&apos;t involve templates?
&gt; 
&gt;   I thought plain overloading would be unsafe, because missing constructors
&gt; wouldn&apos;t be detected - there are already constructors that take int and
&gt; unsigned.

Wow, that&apos;s a good point. I had overlooked that.

Maybe we should go back to your original patch, but I have some other ideas worth considering:

    1) Change the identifier values into an enum, and get rid of the int constructor. Probably straightforward to do.
    2) For colors, change the constructor to either use a wrapper (WebCore::Color has an unwanted &quot;invalid&quot; state, and is slightly less efficient than a plain RGB value, but it might still be OK) or a named constructor like fromColor.

I don&apos;t feel super-strongly about the color one, but I do think that the &quot;int for identifier&quot; thing is weak and should be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58647</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-16 07:44:08 -0700</bug_when>
    <thetext>3) Use the simple &quot;extra parameter&quot; technique used in RetainPtr&apos;s Adopt constructors. An initial parameter with a type that&apos;s significant, but not a value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58656</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-16 09:36:07 -0700</bug_when>
    <thetext>One thing that I like about the template-based solution is that there is no need to add dozens of constructors to CSSPrimitiveValue.h. Not that there would be anything inherently wrong with that, but it looks somewhat ugly to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58661</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-16 10:20:30 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; One thing that I like about the template-based solution is that there is no
&gt; need to add dozens of constructors to CSSPrimitiveValue.h. Not that there would
&gt; be anything inherently wrong with that, but it looks somewhat ugly to me.

I think it&apos;s clearer to have the declarations, even though it&apos;s a little uglier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58702</commentid>
    <comment_count>14</comment_count>
      <attachid>16692</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-16 23:48:01 -0700</bug_when>
    <thetext>Created attachment 16692
updated patch

(In reply to comment #8)

&gt; The checking here seems unnecessary. I think we can just omit it.

Done.

&gt; Do we have test cases that cover all the different length types and property
&gt; values?

Hmm, I think the tests in css1/ and css2.1/ cover this.

&gt; I think that needing to do this is quite unfortunate. Because of this, I&apos;m not
&gt; happy with the template conversion technique. Can we switch to a simpler
&gt; technique that doesn&apos;t involve templates?

Attached is another attempt to save the template technique :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58765</commentid>
    <comment_count>15</comment_count>
      <attachid>16692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-17 21:04:42 -0700</bug_when>
    <thetext>Comment on attachment 16692
updated patch

OK. I can live with this. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58792</commentid>
    <comment_count>16</comment_count>
      <attachid>16692</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-18 01:50:46 -0700</bug_when>
    <thetext>Comment on attachment 16692
updated patch

Patch committed in revision 26742, clearing the review flag to keep the bug open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58793</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-18 01:58:43 -0700</bug_when>
    <thetext>We should probably just open a new bug and mark this as a &quot;depends on&quot;.  Generally one commit per bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112477</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-05 16:40:09 -0800</bug_when>
    <thetext>This was done a while ago.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16667</attachid>
            <date>2007-10-14 08:11:47 -0700</date>
            <delta_ts>2007-10-15 07:43:53 -0700</delta_ts>
            <desc>Move enum mapping into a separate file</desc>
            <filename>PrimitiveValueEnums.txt</filename>
            <type>text/plain</type>
            <size>220045</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAwIEBACisyMDA3LTEwLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTcGxpdCBtb3N0IG9mIENTU1ByaW1pdGl2ZVZhbHVlIGVudW0gbWFwcGluZyBvdXQgb2YgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkKKyAgICAgICAg
YW5kIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoKSAoYW5kIHRoZWlyIFNWRyBjb3Vu
dGVycGFydHMpLiBUaGlzIHNob3VsZCBtYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQ
b3NpdGlvbk9mZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ291bnRlcik6CisgICAgICAgIEFzIENTU1ByaW1pdGl2ZVZhbHVlIG5vdyBoYXMgYSB0
ZW1wbGF0ZSBjb25zdHJ1Y3Rvciwgd2UgbmVlZCB0byBjb25zdHJ1Y3QgUGFzc1JlZlB0ciBleHBs
aWNpdGx5LgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVCb3JkZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgQ29tcG9zaXRlT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQmFja2dyb3VuZEJveCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJhY2tncm91bmRSZXBlYXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3hBbGln
bm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVC
b3hEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEVCb3hMaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRUJveE9yaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUNhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFQ2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFRW1wdHlDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVLSFRNTExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hcmdpbkNvbGxhcHNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTWFycXVl
ZUJlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFTWFycXVlZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVOQlNQTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU92ZXJmbG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUGFnZUJyZWFrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVSZXNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUYWJsZUxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRB
bGlnbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRl
eHRTZWN1cml0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRVRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRVVzZXJEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFVXNlck1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVVzZXJTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV2hpdGVTcGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVdvcmRCcmVhayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVdvcmRXcmFwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQ2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lSm9pbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dERpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2luZFJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVBbGlnbm1lbnRC
YXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RUNvbG9ySW50ZXJwb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRUNvbG9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFRG9taW5hbnRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUltYWdlUmVuZGVyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUG9pbnRlckV2ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVNoYXBlUmVuZGVy
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVGV4
dEFuY2hvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVXcml0aW5nTW9kZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEJhY2tncm91bmRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6Om1hcEJhY2tncm91bmRDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6Om1hcEJhY2tncm91bmRDb21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kUmVwZWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRYUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZFlQb3NpdGlvbik6CisgICAgICAg
ICoga3N2ZzIvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNWR1Byb3BlcnR5Q1NT
VmFsdWUpOgorICAgICAgICAqIGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVydHkpOgorCiAy
MDA3LTEwLTE0ICBQZXRlciBLYXN0aW5nICA8emVyb2RweEBnbWFpbC5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NTcyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1MTAsNiArMzUxMCw3IEBACiAJ
CUUxMEI5QjZEMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjlCNkIwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMEI5
Q0NDMEI3NDdBNDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5Q0NBMEI3NDdBNDQw
MDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKIAkJRTEwQjlDQ0Qw
Qjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5Q0NCMEI3NDdBNDQwMDNF
RDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0gKi87IH07CisJCUUxMENFMTc2MENC
RTQyNDIwMDI4Q0ZFOSAvKiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBDRTE3NTBDQkU0MjQyMDAyOENG
RTkgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oICovOyB9OwogCQlFMTFENTE5MzBCMkU3
QTVGMDA1NkMxODggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTFENTE5MTBCMkU3QTVGMDA1NkMxODggLyogQmFzZTY0LmggKi87IH07
CiAJCUUxMUQ1MTk0MEIyRTdBNUYwMDU2QzE4OCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExRDUxOTIwQjJFN0E1RjAwNTZDMTg4
IC8qIEJhc2U2NC5jcHAgKi87IH07CiAJCUUxMkVEQjdCMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVu
dFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyRURCN0EwQjMwOEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTczNTIsNiArNzM1Myw3IEBACiAJ
CUUxMEI5QjZCMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlWFBhdGhOU1Jlc29sdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjlDQ0EwQjc0N0E0NDAwM0VE
ODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTEwQjlDQ0IwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNS
ZXNvbHZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUN1
c3RvbVhQYXRoTlNSZXNvbHZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEw
Q0UxNzUwQ0JFNDI0MjAwMjhDRkU5IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE5MTBCMkU3QTVGMDA1NkMxODgg
LyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE5MjBCMkU3QTVGMDA1NkMxODggLyog
QmFzZTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRC
NiAvKiBFdmVudFRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVu
dFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwNDUsNiArMTEwNDcs
NyBAQAogCQkJCUE4MEU2Q0RCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5j
cHAgKi8sCiAJCQkJQTgwRTZDQkMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVl
LmggKi8sCiAJCQkJOTMwNzA1OTAwOUUwQzc1ODAwQjE3RkU0IC8qIENTU1ByaW1pdGl2ZVZhbHVl
LmlkbCAqLywKKwkJCQlFMTBDRTE3NTBDQkU0MjQyMDAyOENGRTkgLyogQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oICovLAogCQkJCUE4MEU2Q0NEMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9w
ZXJ0eS5jcHAgKi8sCiAJCQkJQTgwRTZDRDUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5
LmggKi8sCiAJCQkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0IC8qIENTU1Byb3BlcnR5TmFtZXMu
aW4gKi8sCkBAIC0xMzIxMyw2ICsxMzIxNiw3IEBACiAJCQkJQkM2NEI0REMwQ0I0Mjk4QTAwNUYy
QjYyIC8qIENTU0ZvbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RUJEODMwQ0I4
Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTkwOUFDMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTBDRTE3NjBDQkU0MjQyMDAyOENGRTkgLyogQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2NTcyKQorKysgV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsOCArMjQsOCBAQAogCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC0yMTYs
MTc5ICsyMTYsNiBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gCiAK
IGNvbnN0IHVuc2lnbmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IHNpemVvZihjb21wdXRlZFBy
b3BlcnRpZXMpIC8gc2l6ZW9mKGNvbXB1dGVkUHJvcGVydGllc1swXSk7CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsK
LSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBBdXRvOgotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAg
ICBjYXNlIFdlYkNvcmU6OkZpeGVkOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAg
ICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0lOVFJJTlNJQyk7Ci0gICAgICAgIGNhc2UgTWluSW50cmluc2ljOgotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01JTl9JTlRSSU5T
SUMpOwotICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSk7Ci0gICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAgIGNhc2UgU3RhdGljOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAwOwotfQotCi0vLyBIYW5kbGVzIHNwZWNpYWwgdmFsdWUgZm9yICJub25lIi4KLXN0
YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvck1heExlbmd0aChjb25zdCBMZW5ndGgm
IGxlbmd0aCkKLXsKLSAgICBpZiAobGVuZ3RoLmlzRml4ZWQoKSAmJiBsZW5ndGgudmFsdWUoKSA9
PSB1bmRlZmluZWRMZW5ndGgpCi0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9OT05FKTsKLSAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoKTsKLX0KLQot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yQm9yZGVyU3R5bGUoRUJvcmRlclN0
eWxlIHN0eWxlKQotewotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICAgICAgY2FzZSBCTk9ORToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsK
LSAgICAgICAgY2FzZSBCSElEREVOOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0hJRERFTik7Ci0gICAgICAgIGNhc2UgSU5TRVQ6Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5TRVQpOwotICAgICAgICBj
YXNlIEdST09WRToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9HUk9PVkUpOwotICAgICAgICBjYXNlIFJJREdFOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JJREdFKTsKLSAgICAgICAgY2FzZSBPVVRTRVQ6
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1VUU0VU
KTsKLSAgICAgICAgY2FzZSBET1RURUQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfRE9UVEVEKTsKLSAgICAgICAgY2FzZSBEQVNIRUQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREFTSEVEKTsKLSAgICAg
ICAgY2FzZSBTT0xJRDoKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9TT0xJRCk7Ci0gICAgICAgIGNhc2UgRE9VQkxFOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RPVUJMRSk7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JUZXh0QWxpZ24oRVRleHRBbGlnbiBhbGlnbikKLXsKLSAgICBzd2l0
Y2ggKGFsaWduKSB7Ci0gICAgICAgIGNhc2UgVEFBVVRPOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICBjYXNlIExFRlQ6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7Ci0g
ICAgICAgIGNhc2UgUklHSFQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfUklHSFQpOwotICAgICAgICBjYXNlIENFTlRFUjoKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICBjYXNl
IEpVU1RJRlk6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSlVTVElGWSk7Ci0gICAgICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9MRUZUKTsKLSAgICAgICAg
Y2FzZSBXRUJLSVRfUklHSFQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfX1dFQktJVF9SSUdIVCk7Ci0gICAgICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lU
X0NFTlRFUik7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAw
OwotfQotCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JBcHBlYXJhbmNlKEVB
cHBlYXJhbmNlIGFwcGVhcmFuY2UpCi17Ci0gICAgc3dpdGNoIChhcHBlYXJhbmNlKSB7Ci0gICAg
ICAgIGNhc2UgTm9BcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICBjYXNlIENoZWNrYm94QXBwZWFyYW5jZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSEVDS0JP
WCk7Ci0gICAgICAgIGNhc2UgUmFkaW9BcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JBRElPKTsKLSAgICAgICAgY2FzZSBQdXNoQnV0
dG9uQXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9QVVNIX0JVVFRPTik7Ci0gICAgICAgIGNhc2UgU3F1YXJlQnV0dG9uQXBwZWFyYW5j
ZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TUVVB
UkVfQlVUVE9OKTsKLSAgICAgICAgY2FzZSBCdXR0b25BcHBlYXJhbmNlOgotICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JVVFRPTik7Ci0gICAgICAgIGNh
c2UgQnV0dG9uQmV2ZWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0JVVFRPTl9CRVZFTCk7Ci0gICAgICAgIGNhc2UgTGlzdGJveEFw
cGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTElTVEJPWCk7Ci0gICAgICAgIGNhc2UgTGlzdEl0ZW1BcHBlYXJhbmNlOgotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xJU1RJVEVNKTsKLSAgICAg
ICAgY2FzZSBNZW51bGlzdEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTUVOVUxJU1QpOwotICAgICAgICBjYXNlIE1lbnVsaXN0QnV0
dG9uQXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9NRU5VTElTVF9CVVRUT04pOwotICAgICAgICBjYXNlIE1lbnVsaXN0VGV4dEFwcGVh
cmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
TUVOVUxJU1RfVEVYVCk7Ci0gICAgICAgIGNhc2UgTWVudWxpc3RUZXh0RmllbGRBcHBlYXJhbmNl
OgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01FTlVM
SVNUX1RFWFRGSUVMRCk7Ci0gICAgICAgIGNhc2UgU2Nyb2xsYmFyQnV0dG9uVXBBcHBlYXJhbmNl
OgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9M
TEJBUkJVVFRPTl9VUCk7Ci0gICAgICAgIGNhc2UgU2Nyb2xsYmFyQnV0dG9uRG93bkFwcGVhcmFu
Y2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NS
T0xMQkFSQlVUVE9OX0RPV04pOwotICAgICAgICBjYXNlIFNjcm9sbGJhckJ1dHRvbkxlZnRBcHBl
YXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1NDUk9MTEJBUkJVVFRPTl9MRUZUKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25SaWdo
dEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfU0NST0xMQkFSQlVUVE9OX1JJR0hUKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJUcmFj
a0hvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRSQUNLX0hPUklaT05UQUwpOwotICAgICAgICBjYXNl
IFNjcm9sbGJhclRyYWNrVmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRSQUNLX1ZFUlRJQ0FMKTsKLSAg
ICAgICAgY2FzZSBTY3JvbGxiYXJUaHVtYkhvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRIVU1CX0hP
UklaT05UQUwpOwotICAgICAgICBjYXNlIFNjcm9sbGJhclRodW1iVmVydGljYWxBcHBlYXJhbmNl
OgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9M
TEJBUlRIVU1CX1ZFUlRJQ0FMKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJHcmlwcGVySG9yaXpv
bnRhbEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU0NST0xMQkFSR1JJUFBFUl9IT1JJWk9OVEFMKTsKLSAgICAgICAgY2FzZSBTY3Jv
bGxiYXJHcmlwcGVyVmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUkdSSVBQRVJfVkVSVElDQUwpOwotICAg
ICAgICBjYXNlIFNsaWRlckhvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFUl9IT1JJWk9OVEFMKTsKLSAgICAg
ICAgY2FzZSBTbGlkZXJWZXJ0aWNhbEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0xJREVSX1ZFUlRJQ0FMKTsKLSAgICAgICAgY2Fz
ZSBTbGlkZXJUaHVtYkhvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFUlRIVU1CX0hPUklaT05UQUwpOwotICAg
ICAgICBjYXNlIFNsaWRlclRodW1iVmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFUlRIVU1CX1ZFUlRJQ0FMKTsK
LSAgICAgICAgY2FzZSBDYXJldEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0FSRVQpOwotICAgICAgICBjYXNlIFNlYXJjaEZpZWxk
QXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9TRUFSQ0hGSUVMRCk7Ci0gICAgICAgIGNhc2UgU2VhcmNoRmllbGREZWNvcmF0aW9uQXBw
ZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TRUFSQ0hGSUVMRF9ERUNPUkFUSU9OKTsKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uQXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9SRVNVTFRTX0RFQ09SQVRJT04pOwotICAgICAg
ICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkFwcGVhcmFuY2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0VBUkNIRklFTERfUkVTVUxUU19C
VVRUT04pOwotICAgICAgICBjYXNlIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uQXBwZWFyYW5jZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRUFSQ0hG
SUVMRF9DQU5DRUxfQlVUVE9OKTsKLSAgICAgICAgY2FzZSBUZXh0RmllbGRBcHBlYXJhbmNlOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFRGSUVM
RCk7Ci0gICAgICAgIGNhc2UgVGV4dEFyZWFBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFRBUkVBKTsKLSAgICB9Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvck1hcmdpbkNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBjb2xsYXBz
ZSkKLXsKLSAgICBzd2l0Y2ggKGNvbGxhcHNlKSB7Ci0gICAgICAgIGNhc2UgTUNPTExBUFNFOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTExBUFNF
KTsKLSAgICAgICAgY2FzZSBNU0VQQVJBVEU6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfU0VQQVJBVEUpOwotICAgICAgICBjYXNlIE1ESVNDQVJEOgot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RJU0NBUkQp
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQog
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdykKIHsKICAgICBpZiAoIXNoYWRvdykKQEAgLTQyOSwxMyArMjU2LDEzIEBAIHN0
YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQb3NpdGlvbk8KICAgICB9CiAKICAgICBpZiAo
c3R5bGUtPnBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBzdHlsZS0+cG9zaXRpb24o
KSA9PSBGaXhlZFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobCk7Cisg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobCk7CiAKICAgICBpZiAoc3R5bGUt
PnBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgLy8gRklYTUU6IEl0J3Mg
bm90IGVub3VnaCB0byBzaW1wbHkgcmV0dXJuICJhdXRvIiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQg
aWYgdGhlIG90aGVyIHNpZGUgaXMgZGVmaW5lZC4KICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMg
aWYgbGVmdCBpcyBhdXRvIGFuZCByaWdodCBpcyBub3QgYXV0bywgdGhlbiBsZWZ0J3MgY29tcHV0
ZWQgdmFsdWUgaXMgbmVnYXRpdmUgcmlnaHQuCiAgICAgICAgIC8vIFNvIHdlIHNob3VsZCBnZXQg
dGhlIG9wcG9zaXRlIGxlbmd0aCB1bml0IGFuZCBzZWUgaWYgaXQgaXMgYXV0by4KLSAgICAgICAg
cmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGwpOworICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKGwpOwogCiAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FV
VE8pOwogfQpAQCAtNDkzLDM3ICszMjAsMTEgQEAgdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OnNldENzcwogICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogfQog
Ci0vLyBEaXNwbGF5IGludGVnZXJzIGluIGludGVnZXIgZm9ybWF0IGluc3RlYWQgb2YgIjEuMCIu
Ci1zdGF0aWMgU3RyaW5nIG51bWJlckFzU3RyaW5nKGRvdWJsZSBuKQotewotICAgIGxvbmcgaSA9
IHN0YXRpY19jYXN0PGxvbmc+KG4pOwotICAgIHJldHVybiBpID09IG4gPyBTdHJpbmc6Om51bWJl
cihpKSA6IFN0cmluZzo6bnVtYmVyKG4pOwotfQotCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5
SUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCwg
VXBkYXRlTGF5b3V0KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0
aXZlVmFsdWVGcm9tTGVuZ3RoKExlbmd0aCBsZW5ndGgpCi17Ci0gICAgU3RyaW5nIHN0cmluZzsK
LSAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQZXJjZW50OgotICAg
ICAgICAgICAgc3RyaW5nID0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLnBlcmNlbnQoKSkgKyAiJSI7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHN0
cmluZyA9IG51bWJlckFzU3RyaW5nKGxlbmd0aC5jYWxjTWluVmFsdWUoMCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAgIHN0cmluZyA9ICJhdXRv
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci19Ci0KIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
dHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9k
ZSA9IG1fbm9kZS5nZXQoKTsKQEAgLTU1Miw1NiArMzUzLDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JB
Q0tHUk9VTkRfU0laRTogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IG5ldyBDU1NWYWx1ZUxpc3QodHJ1ZSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVG
b3JMZW5ndGgoc3R5bGUtPmJhY2tncm91bmRTaXplKCkud2lkdGgpKTsKLSAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh2YWx1ZUZvckxlbmd0aChzdHlsZS0+YmFja2dyb3VuZFNpemUoKS5oZWlnaHQp
KTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PmJhY2tncm91bmRTaXplKCkud2lkdGgpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJhY2tncm91bmRTaXplKCkuaGVpZ2h0KSk7CiAgICAg
ICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0gIAogICAgICAgICBjYXNl
IENTU19QUk9QX0JBQ0tHUk9VTkRfUkVQRUFUOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+
YmFja2dyb3VuZFJlcGVhdCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSRVBFQVQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBF
QVQpOwotICAgICAgICAgICAgICAgIGNhc2UgUkVQRUFUX1g6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBFQVRfWCk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBSRVBFQVRfWToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFUEVBVF9ZKTsKLSAgICAgICAgICAgICAgICBjYXNl
IE5PX1JFUEVBVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PX1JFUEVBVCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFJlcGVhdCgpKTsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ09NUE9TSVRFOgotICAgICAg
ICAgICAgc3dpdGNoIChzdHlsZS0+YmFja2dyb3VuZENvbXBvc2l0ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDb21wb3NpdGVDbGVhcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NMRUFSKTsKLSAgICAgICAgICAgICAgICBjYXNl
IENvbXBvc2l0ZUNvcHk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNv
dXJjZU92ZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TT1VSQ0VfT1ZFUik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVT
b3VyY2VJbjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1NPVVJDRV9JTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVTb3Vy
Y2VPdXQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9TT1VSQ0VfT1VUKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJj
ZUF0b3A6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9TT1VSQ0VfQVRPUCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0
aW5hdGlvbk92ZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9PVkVSKTsKLSAgICAgICAgICAgICAgICBjYXNlIENv
bXBvc2l0ZURlc3RpbmF0aW9uSW46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9JTik7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9OX09VVCk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9BVE9Q
KTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1hPUik7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2VyOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUExVU19EQVJLRVIpOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ29tcG9zaXRlSGlnaGxpZ2h0OgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElHSExJR0hUKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIENvbXBvc2l0ZVBsdXNMaWdodGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUExVU19MSUdIVEVSKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5i
YWNrZ3JvdW5kQ29tcG9zaXRlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRf
QVRUQUNITUVOVDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZEF0dGFjaG1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
U0NST0xMKTsKQEAgLTYwOSw0OCArMzY4LDIwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRf
Q0xJUDoKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfT1JJR0lOOiB7
CiAgICAgICAgICAgICBFQmFja2dyb3VuZEJveCBib3ggPSAocHJvcGVydHlJRCA9PSBDU1NfUFJP
UF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ0xJUCA/IHN0eWxlLT5iYWNrZ3JvdW5kQ2xpcCgpIDogc3R5
bGUtPmJhY2tncm91bmRPcmlnaW4oKSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGJveCkgewotICAg
ICAgICAgICAgICAgIGNhc2UgQkdCT1JERVI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CT1JERVIpOwotICAgICAgICAgICAgICAgIGNh
c2UgQkdQQURESU5HOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfUEFERElORyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCR0NPTlRFTlQ6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9DT05URU5UKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKGJveCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNL
R1JPVU5EX1BPU0lUSU9OOiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gbmV3IENTU1ZhbHVlTGlzdCh0cnVlKTsKIAotICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aChz
dHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGguaXNQ
ZXJjZW50KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShsZW5ndGgucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENT
U1ByaW1pdGl2ZVZhbHVlKGxlbmd0aC52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KSk7Ci0KLSAgICAgICAgICAgIGxlbmd0aCA9IHN0eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9uKCk7
Ci0gICAgICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgudmFsdWUo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigpKSk7Cisg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5iYWNr
Z3JvdW5kWVBvc2l0aW9uKCkpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTl9Y
OiB7Ci0gICAgICAgICAgICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWFBvc2l0aW9u
KCkpOwotICAgICAgICAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9C
QUNLR1JPVU5EX1BPU0lUSU9OX1k6IHsKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGgoc3R5bGUt
PmJhY2tncm91bmRZUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2Vu
dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobGVuZ3Ro
LnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxl
bmd0aC52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgfQorICAg
ICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfUE9TSVRJT05fWDoKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJhY2tncm91bmRYUG9zaXRpb24oKSk7
CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTl9ZOgorICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFlQb3NpdGlv
bigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0U6CiAgICAgICAgICAg
ICBpZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTExBUFNFKTsKQEAgLTY3NCwxMyArNDA1LDEz
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9DT0xPUjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSk7CiAgICAg
ICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1RPUF9TVFlMRToKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJvcmRlclRvcFN0eWxlKCkpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVF9TVFlMRToKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyUmlnaHRT
dHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1NUWUxFOgotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmJvcmRlckJvdHRvbVN0
eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+
Ym9yZGVyQm90dG9tU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlRf
U1RZTEU6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9y
ZGVyTGVmdFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRF
Ul9UT1BfV0lEVEg6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAg
ICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfUklHSFRfV0lEVEg6CkBAIC02OTEsMTAwICs0MjIsMzkg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICBjYXNlIENTU19QUk9QX0JPVFRPTToK
ICAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLCBDU1NfUFJP
UF9CT1RUT00pOwotICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0FMSUdOOgotICAg
ICAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94QWxpZ24oKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgQlNUUkVUQ0g6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9TVFJFVENIKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJTVEFSVDoKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NU
QVJUKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJDRU5URVI6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICAg
ICAgICAgIGNhc2UgQkVORDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0VORCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCQkFTRUxJTkU6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9CQVNFTElORSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCSlVTVElGWToKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7IC8vIG5vdCBhbGxvd2VkCi0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0FMSUdOOiB7CisgICAgICAgICAgICBFQm94QWxpZ25t
ZW50IGJveEFsaWduID0gc3R5bGUtPmJveEFsaWduKCk7CisgICAgICAgICAgICBBU1NFUlQoYm94
QWxpZ24gIT0gQkpVU1RJRlkpOworICAgICAgICAgICAgaWYgKGJveEFsaWduID09IEJKVVNUSUZZ
KQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShib3hBbGlnbik7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0JPWF9ESVJFQ1RJT046Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hE
aXJlY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQk5PUk1BTDoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBCUkVWRVJTRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFVkVSU0UpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveERpcmVj
dGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9GTEVYOgogICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym94RmxleCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9CT1hfRkxFWF9HUk9VUDoKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3R5bGUtPmJveEZsZXhHcm91cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfTElORVM6Ci0gICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlLT5ib3hMaW5lcygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTSU5HTEU6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TSU5HTEUpOwotICAgICAgICAgICAgICAgIGNhc2UgTVVMVElQTEU6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NVUxUSVBMRSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShz
dHlsZS0+Ym94TGluZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfT1JE
SU5BTF9HUk9VUDoKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPmJveE9yZGluYWxHcm91cCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAg
ICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfT1JJRU5UOgotICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+Ym94T3JpZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEhPUklaT05U
QUw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9IT1JJWk9OVEFMKTsKLSAgICAgICAgICAgICAgICBjYXNlIFZFUlRJQ0FMOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVkVSVElD
QUwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9Q
QUNLOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94UGFjaygpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBCU1RBUlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVEFSVCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCRU5EOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
RU5EKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJDRU5URVI6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICAg
ICAgICAgIGNhc2UgQkpVU1RJRlk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9KVVNUSUZZKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJT
VFJFVENIOgotICAgICAgICAgICAgICAgIGNhc2UgQkJBU0VMSU5FOgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsgLy8gbm90IGFsbG93ZWQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hPcmllbnQoKSk7CisgICAgICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfUEFDSzogeworICAgICAgICAgICAgRUJveEFsaWdu
bWVudCBib3hQYWNrID0gc3R5bGUtPmJveFBhY2soKTsKKyAgICAgICAgICAgIEFTU0VSVChib3hQ
YWNrICE9IEJTVFJFVENIKTsKKyAgICAgICAgICAgIEFTU0VSVChib3hQYWNrICE9IEJCQVNFTElO
RSk7CisgICAgICAgICAgICBpZiAoYm94UGFjayA9PSBCSlVTVElGWSB8fCBib3hQYWNrPT0gQkJB
U0VMSU5FKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShib3hQYWNrKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfQk9YX1NIQURPVzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNo
YWRvdyhzdHlsZS0+Ym94U2hhZG93KCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0NBUFRJT05f
U0lERToKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNhcHRpb25TaWRlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIENBUExFRlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgICAgICBjYXNlIENB
UFJJR0hUOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUklHSFQpOwotICAgICAgICAgICAgICAgIGNhc2UgQ0FQVE9QOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVE9QKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIENBUEJPVFRPTToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVFRPTSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y2FwdGlvblNp
ZGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQ0xFQVI6Ci0gICAgICAgICAgICBzd2l0Y2gg
KHN0eWxlLT5jbGVhcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDTk9ORToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ0xFRlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgICAgICBjYXNl
IENSSUdIVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1JJR0hUKTsKLSAgICAgICAgICAgICAgICBjYXNlIENCT1RIOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQk9USCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShz
dHlsZS0+Y2xlYXIoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09MT1I6CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5jb2xvcigpLnJnYigpKTsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9DT1VOVDoKQEAgLTc5OCw0MiArNDY4
LDIwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX0NPTE9SOgogICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5bGUtPmNvbHVtblJ1bGVDb2xv
cigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX1NUWUxFOgot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmNvbHVtblJ1bGVT
dHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PmNvbHVtblJ1bGVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVN
Tl9SVUxFX1dJRFRIOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShz
dHlsZS0+Y29sdW1uUnVsZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0JSRUFLX0FGVEVSOgotICAgICAgICAg
ICAgc3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtBZnRlcigpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxX
QVlTKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y29s
dW1uQnJlYWtBZnRlcigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9C
UkVBS19CRUZPUkU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jb2x1bW5CcmVha0JlZm9y
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfQUxXQVlTKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVZP
SUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9BVk9JRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQ09MVU1OX0JSRUFLX0lOU0lERToKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNvbHVt
bkJyZWFrSW5zaWRlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVVUTzoKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwot
ICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKLSAgICAgICAgICAgICAgICBj
YXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gbm90IGFsbG93ZWQK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5jb2x1bW5CcmVha0JlZm9yZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VC
S0lUX0NPTFVNTl9CUkVBS19JTlNJREU6IHsKKyAgICAgICAgICAgIEVQYWdlQnJlYWsgcGFnZUJy
ZWFrID0gc3R5bGUtPmNvbHVtbkJyZWFrSW5zaWRlKCk7CisgICAgICAgICAgICBBU1NFUlQocGFn
ZUJyZWFrICE9IFBCQUxXQVlTKTsKKyAgICAgICAgICAgIGlmIChwYWdlQnJlYWsgPT0gUEJBTFdB
WVMpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHBhZ2VCcmVhayk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0NPTFVNTl9XSURUSDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQXV0
b0NvbHVtbldpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FVVE8pOwpAQCAtODQ2LDExMiArNDk0LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSgoKmN1cnNvcnMpW2ldLmN1cnNvckltYWdl
LT51cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0
eWxlLT5jdXJzb3IoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0FVVE86Ci0gICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVU
Tyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX0NST1NTOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0NST1NTSEFJUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0RFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgICAgIHZh
bHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVGQVVMVCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1BPSU5URVI6Ci0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
UE9JTlRFUik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfTU9WRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NFTEw6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0VMTCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1ZFUlRJQ0FMX1RFWFQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
VkVSVElDQUxfVEVYVCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ1VSU09SX0NPTlRFWFRfTUVOVToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT05URVhUX01FTlUpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9BTElBUzoKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9B
TElBUyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1VSU09SX0NPUFk6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQ09QWSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05PTkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1BST0dSRVNT
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJT
T1JfTk9fRFJPUDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT19EUk9QKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9UX0FMTE9XRUQ6Ci0gICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9UX0FMTE9XRUQpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9XRUJL
SVRfWk9PTV9JTjoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX1pPT01fSU4pOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRfWk9PTV9PVVQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJ
VF9aT09NX09VVCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0VfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpFOgotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05FX1JFU0la
RSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VS
U09SX05XX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9OV19SRVNJWkUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OX1JFU0laRSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JF
U0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9TRV9SRVNJWkUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1dfUkVTSVpFKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Ci0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
U19SRVNJWkUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENVUlNPUl9XX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9XX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0VXX1JFU0laRToKLSAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FV19SRVNJWkUp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9OU19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTlNfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTkVTV19SRVNJWkU6Ci0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTkVTV19SRVNJWkUpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9O
V1NFX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OV1NFX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6Ci0gICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MX1JFU0laRSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1JP
V19SRVNJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfUk9XX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1RFWFQ6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfV0FJVCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX0hF
TFA6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfSEVMUCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0FMTF9TQ1JPTEw6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxMX1NDUk9MTCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3R5bGUtPmN1cnNvcigpKTsKICAgICAgICAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxl
YXNlKCk7CkBAIC05NTksNzcgKzUwMiwxMyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfRElSRUNUSU9OOgotICAgICAgICAgICAgc3dpdGNo
IChzdHlsZS0+ZGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIExUUjoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xUUik7
Ci0gICAgICAgICAgICAgICAgY2FzZSBSVEw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SVEwpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmRpcmVjdGlvbigpKTsK
ICAgICAgICAgY2FzZSBDU1NfUFJPUF9ESVNQTEFZOgotICAgICAgICAgICAgc3dpdGNoIChzdHls
ZS0+ZGlzcGxheSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBJTkxJTkU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTkxJTkUpOwot
ICAgICAgICAgICAgICAgIGNhc2UgQkxPQ0s6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CTE9DSyk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBMSVNUX0lURU06Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9MSVNUX0lURU0pOwotICAgICAgICAgICAgICAgIGNhc2UgUlVOX0lOOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
UlVOX0lOKTsKLSAgICAgICAgICAgICAgICBjYXNlIENPTVBBQ1Q6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT01QQUNUKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIElOTElORV9CTE9DSzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lOTElORV9CTE9DSyk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBUQUJMRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFKTsKLSAgICAgICAgICAgICAgICBjYXNlIElOTElORV9U
QUJMRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0lOTElORV9UQUJMRSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JP
VVA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9UQUJMRV9ST1dfR1JPVVApOwotICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfSEVBREVS
X0dST1VQOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfVEFCTEVfSEVBREVSX0dST1VQKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRBQkxF
X0ZPT1RFUl9HUk9VUDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1RBQkxFX0ZPT1RFUl9HUk9VUCk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBUQUJMRV9ST1c6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9UQUJMRV9ST1cpOwotICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfQ09M
VU1OX0dST1VQOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfVEFCTEVfQ09MVU1OX0dST1VQKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRB
QkxFX0NPTFVNTjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1RBQkxFX0NPTFVNTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBUQUJMRV9D
RUxMOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfVEFCTEVfQ0VMTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBUQUJMRV9DQVBUSU9OOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
VEFCTEVfQ0FQVElPTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBCT1g6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX0JPWCk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9JTkxJTkVfQk9YKTsK
LSAgICAgICAgICAgICAgICBjYXNlIE5PTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5kaXNwbGF5KCkpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX0VNUFRZX0NFTExTOgotICAgICAgICAgICAgc3dpdGNoIChz
dHlsZS0+ZW1wdHlDZWxscygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTSE9XOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0hPVyk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBISURFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElERSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+ZW1wdHlDZWxscygp
KTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9GTE9BVDoKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5
bGUtPmZsb2F0aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEZOT05FOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBGTEVGVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xFRlQpOwotICAgICAgICAgICAgICAgIGNhc2Ug
RlJJR0hUOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfUklHSFQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmZsb2F0aW5nKCkpOwogICAgICAgICBjYXNlIENTU19Q
Uk9QX0ZPTlRfRkFNSUxZOgogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgb25seSByZXR1cm5z
IHRoZSBmaXJzdCBmYW1pbHkuCiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5kb21TdHJpbmco
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwpAQCAtMTA1NCw3ICs1MzMsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIGNhc2UgQ1NT
X1BST1BfSEVJR0hUOgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc2l6aW5nQm94KHJlbmRlcmVyKS5oZWlnaHQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVG
b3JMZW5ndGgoc3R5bGUtPmhlaWdodCgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPmhlaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VC
S0lUX0hJR0hMSUdIVDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGlnaGxpZ2h0KCkgPT0gbnVs
bEF0b20pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX05PTkUpOwpAQCAtMTA5MCwxMzggKzU2OSw1NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OT05FKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX1BPU0lUSU9OOgot
ICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+bGlzdFN0eWxlUG9zaXRpb24oKSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgT1VUU0lERToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09VVFNJREUpOwotICAgICAgICAgICAgICAgIGNhc2Ug
SU5TSURFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfSU5TSURFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5saXN0U3R5bGVQb3NpdGlvbigpKTsKICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxl
LT5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIExOT05FOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBESVNDOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRElTQyk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDSVJDTEU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9DSVJDTEUpOwotICAgICAgICAgICAgICAgIGNhc2UgU1FVQVJFOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1FVQVJF
KTsKLSAgICAgICAgICAgICAgICBjYXNlIExERUNJTUFMOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREVDSU1BTCk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBERUNJTUFMX0xFQURJTkdfWkVSTzoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RFQ0lNQUxfTEVBRElOR19aRVJPKTsK
LSAgICAgICAgICAgICAgICBjYXNlIExPV0VSX1JPTUFOOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfUk9NQU4pOwotICAgICAg
ICAgICAgICAgIGNhc2UgVVBQRVJfUk9NQU46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9VUFBFUl9ST01BTik7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBMT1dFUl9HUkVFSzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSX0dSRUVLKTsKLSAgICAgICAgICAgICAgICBjYXNl
IExPV0VSX0FMUEhBOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTE9XRVJfQUxQSEEpOwotICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJf
TEFUSU46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9MT1dFUl9MQVRJTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBVUFBFUl9BTFBIQToK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1VQUEVSX0FMUEhBKTsKLSAgICAgICAgICAgICAgICBjYXNlIFVQUEVSX0xBVElOOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJf
TEFUSU4pOwotICAgICAgICAgICAgICAgIGNhc2UgSEVCUkVXOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEVCUkVXKTsKLSAgICAgICAg
ICAgICAgICBjYXNlIEFSTUVOSUFOOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVJNRU5JQU4pOwotICAgICAgICAgICAgICAgIGNhc2Ug
R0VPUkdJQU46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9HRU9SR0lBTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDSktfSURFT0dSQVBI
SUM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9DSktfSURFT0dSQVBISUMpOwotICAgICAgICAgICAgICAgIGNhc2UgSElSQUdBTkE6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9I
SVJBR0FOQSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBLQVRBS0FOQToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0tBVEFLQU5BKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIEhJUkFHQU5BX0lST0hBOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElSQUdBTkFfSVJPSEEpOwotICAg
ICAgICAgICAgICAgIGNhc2UgS0FUQUtBTkFfSVJPSEE6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9LQVRBS0FOQV9JUk9IQSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+bGlzdFN0eWxlVHlwZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5fVE9QOgog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVk
LgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXIt
Pm1hcmdpblRvcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCkpOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bWFyZ2luVG9wKCkpOwogICAgICAgICBj
YXNlIENTU19QUk9QX01BUkdJTl9SSUdIVDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikKICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9zZWQgdG8gcmV0dXJuIHRoZSBwZXJjZW50YWdl
IGlmIHBlcmNlbnRhZ2Ugd2FzIHNwZWNpZmllZC4KICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5tYXJnaW5SaWdodCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+
bWFyZ2luUmlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT5tYXJnaW5SaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJHSU5fQk9U
VE9NOgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3NlZCB0byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3Bl
Y2lmaWVkLgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVu
ZGVyZXItPm1hcmdpbkJvdHRvbSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luQm90dG9tKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bWFyZ2luQm90dG9t
KCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX01BUkdJTl9MRUZUOgogICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0byByZXR1cm4g
dGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgogICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdpbkxlZnQoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5tYXJnaW5MZWZ0KCkpOwogICAgICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfTUFSUVVFRV9ESVJFQ1RJT046Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5t
YXJxdWVlRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIE1GT1JXQVJEOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRk9S
V0FSRFMpOwotICAgICAgICAgICAgICAgIGNhc2UgTUJBQ0tXQVJEOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkFDS1dBUkRTKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIE1BVVRPOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBN
VVA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9VUCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBNRE9XTjoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RPV04pOwotICAgICAgICAg
ICAgICAgIGNhc2UgTUxFRlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAgICAgICAgICAgICAgICBjYXNlIE1SSUdIVDoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1JJR0hUKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT5tYXJxdWVlRGlyZWN0aW9uKCkpOwogICAgICAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfTUFSUVVFRV9JTkNSRU1FTlQ6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVG
b3JMZW5ndGgoc3R5bGUtPm1hcnF1ZWVJbmNyZW1lbnQoKSk7CisgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5tYXJxdWVlSW5jcmVtZW50KCkpOwogICAgICAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRV9SRVBFVElUSU9OOgogICAgICAgICAgICAg
aWYgKHN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTkZJTklURSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VC
S0lUX01BUlFVRUVfU1RZTEU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5tYXJxdWVlQmVo
YXZpb3IoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgTU5PTkU6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAg
ICAgICAgICBjYXNlIE1TQ1JPTEw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TQ1JPTEwpOwotICAgICAgICAgICAgICAgIGNhc2UgTVNM
SURFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfU0xJREUpOwotICAgICAgICAgICAgICAgIGNhc2UgTUFMVEVSTkFURToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMVEVSTkFU
RSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfVVNFUl9NT0RJRlk6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT51c2VyTW9kaWZ5
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFJFQURfT05MWToKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFQURfT05MWSk7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBSRUFEX1dSSVRFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklURSk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkVBRF9XUklURV9QTEFJTlRFWFRf
T05MWSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBjYXNlIENTU19QUk9QX01BWF9IRUlHSFQ6
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JNYXhMZW5ndGgoc3R5bGUtPm1heEhlaWdodCgp
KTsKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVhfV0lEVEg6Ci0gICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JNYXhMZW5ndGgoc3R5bGUtPm1heFdpZHRoKCkpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9NQVhfSEVJR0hUOiB7CisgICAgICAgICAgICBjb25zdCBMZW5ndGgmIG1heEhl
aWdodCA9IHN0eWxlLT5tYXhIZWlnaHQoKTsKKyAgICAgICAgICAgIGlmIChtYXhIZWlnaHQuaXNG
aXhlZCgpICYmIG1heEhlaWdodC52YWx1ZSgpID09IHVuZGVmaW5lZExlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKG1heEhlaWdodCk7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVhfV0lEVEg6IHsKKyAgICAgICAgICAgIGNvbnN0
IExlbmd0aCYgbWF4V2lkdGggPSBzdHlsZS0+bWF4SGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAo
bWF4V2lkdGguaXNGaXhlZCgpICYmIG1heFdpZHRoLnZhbHVlKCkgPT0gdW5kZWZpbmVkTGVuZ3Ro
KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9O
T05FKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobWF4V2lkdGgp
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfTUlOX0hFSUdIVDoKLSAgICAgICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWluSGVpZ2h0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bWluSGVpZ2h0KCkpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX01JTl9XSURUSDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZv
ckxlbmd0aChzdHlsZS0+bWluV2lkdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5taW5XaWR0aCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9P
UEFDSVRZOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+
b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2Ug
Q1NTX1BST1BfT1JQSEFOUzoKQEAgLTEyMzEsMTE1ICs2MjksNTAgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICBjYXNlIENTU19QUk9QX09VVExJTkVf
U1RZTEU6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPm91dGxpbmVTdHlsZUlzQXV0bygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckJvcmRlclN0eWxlKHN0eWxlLT5vdXRsaW5lU3R5
bGUoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5v
dXRsaW5lU3R5bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9XSURUSDoKICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm91dGxpbmVXaWR0
aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9P
VkVSRkxPVzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobWF4KHN0
eWxlLT5vdmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKSk7CiAgICAgICAgIGNhc2UgQ1NT
X1BST1BfT1ZFUkZMT1dfWDoKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19ZOiB7Ci0g
ICAgICAgICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3c7Ci0gICAgICAgICAgICBzd2l0Y2ggKHByb3Bl
cnR5SUQpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1g6Ci0gICAg
ICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gc3R5bGUtPm92ZXJmbG93WCgpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9X
X1k6Ci0gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gc3R5bGUtPm92ZXJmbG93WSgpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IG1heChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxl
LT5vdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKG92ZXJm
bG93KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBPVklTSUJMRToKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1ZJU0lCTEUpOwotICAgICAg
ICAgICAgICAgIGNhc2UgT0hJRERFTjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJRERFTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBP
U0NST0xMOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfU0NST0xMKTsKLSAgICAgICAgICAgICAgICBjYXNlIE9BVVRPOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBPTUFSUVVFRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfTUFSUVVFRSk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBPT1ZFUkxBWToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09WRVJMQVkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+b3Zl
cmZsb3dYKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1k6CisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5vdmVyZmxvd1koKSk7CiAgICAg
ICAgIGNhc2UgQ1NTX1BST1BfUEFERElOR19UT1A6CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+
cGFkZGluZ1RvcCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+cGFkZGluZ1RvcCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnBhZGRpbmdUb3AoKSk7CiAgICAgICAg
IGNhc2UgQ1NTX1BST1BfUEFERElOR19SSUdIVDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5w
YWRkaW5nUmlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnBhZGRpbmdSaWdodCgpKTsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HX0JPVFRPTToKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRl
cmVyLT5wYWRkaW5nQm90dG9tKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wYWRkaW5nQm90dG9tKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+cGFkZGluZ0JvdHRv
bSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HX0xFRlQ6CiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShyZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdMZWZ0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+cGFkZGluZ0xl
ZnQoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19BRlRFUjoKLSAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0FmdGVyKCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFBCQVVUTzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdB
WVMpOwotICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9JRDoKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FWT0lEKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5wYWdl
QnJlYWtBZnRlcigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFLX0JFRk9SRToK
LSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnBhZ2VCcmVha0JlZm9yZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQUxX
QVlTOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQUxXQVlTKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJFQUtfSU5TSURFOgot
ICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+cGFnZUJyZWFrSW5zaWRlKCkpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIFBCQVVUTzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgICAgIGNhc2UgUEJBVk9J
RDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0FWT0lEKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAg
ICAgICAgICBicmVhazsgLy8gbm90IGFsbG93ZWQKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5wYWdlQnJlYWtCZWZvcmUoKSk7
CisgICAgICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19JTlNJREU6IHsKKyAgICAgICAgICAg
IEVQYWdlQnJlYWsgcGFnZUJyZWFrID0gc3R5bGUtPnBhZ2VCcmVha0luc2lkZSgpOworICAgICAg
ICAgICAgQVNTRVJUKHBhZ2VCcmVhayAhPSBQQkFMV0FZUyk7CisgICAgICAgICAgICBpZiAocGFn
ZUJyZWFrID09IFBCQUxXQVlTKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+cGFnZUJyZWFrSW5zaWRlKCkp
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfUE9TSVRJT046Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHN0eWxlLT5wb3NpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBTdGF0
aWNQb3NpdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NUQVRJQyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZVBvc2l0
aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfUkVMQVRJVkUpOwotICAgICAgICAgICAgICAgIGNhc2UgQWJzb2x1dGVQb3NpdGlvbjoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0FCU09MVVRFKTsKLSAgICAgICAgICAgICAgICBjYXNlIEZpeGVkUG9zaXRpb246Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9GSVhFRCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfUklHSFQ6CiAgICAg
ICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZSwgQ1NTX1BST1BfUklH
SFQpOwogICAgICAgICBjYXNlIENTU19QUk9QX1RBQkxFX0xBWU9VVDoKLSAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPnRhYmxlTGF5b3V0KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFRBVVRP
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVVUTyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBURklYRUQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9GSVhFRCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+
dGFibGVMYXlvdXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9BTElHTjoKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvclRleHRBbGlnbihzdHlsZS0+dGV4dEFsaWduKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dGV4dEFsaWduKCkp
OwogICAgICAgICBjYXNlIENTU19QUk9QX1RFWFRfREVDT1JBVElPTjogewogICAgICAgICAgICAg
U3RyaW5nIHN0cmluZzsKICAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAm
IFVOREVSTElORSkKQEAgLTEzODksMjIgKzcyMiwxMSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX0ZJ
TExfQ09MT1I6CiAgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0
eWxlLCBzdHlsZS0+dGV4dEZpbGxDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhU
X0lOREVOVDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dElu
ZGVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
PnRleHRJbmRlbnQoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9TSEFET1c6CiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRleHRTaGFkb3coKSk7CiAgICAg
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NFQ1VSSVRZOgotICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+dGV4dFNlY3VyaXR5KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFRTTk9O
RToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX05PTkUpOwotICAgICAgICAgICAgICAgIGNhc2UgVFNESVNDOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRElTQyk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBUU0NJUkNMRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NJUkNMRSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBU
U1NRVUFSRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1NRVUFSRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dGV4dFNlY3VyaXR5KCkpOwogICAgICAgICBjYXNl
IENTU19QUk9QX19XRUJLSVRfVEVYVF9TSVpFX0FESlVTVDoKICAgICAgICAgICAgIGlmIChzdHls
ZS0+dGV4dFNpemVBZGp1c3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CkBAIC0xNDE0LDMxICs3MzYsMTEgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfVEVYVF9TVFJPS0VfV0lEVEg6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU19QUk9QX1RFWFRfVFJBTlNGT1JNOgotICAgICAg
ICAgICAgc3dpdGNoIChzdHlsZS0+dGV4dFRyYW5zZm9ybSgpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDQVBJVEFMSVpFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfQ0FQSVRBTElaRSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBVUFBF
UkNBU0U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9VUFBFUkNBU0UpOwotICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJDQVNFOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9X
RVJDQVNFKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRUTk9ORToKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRl
eHRUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVE9QOgogICAgICAgICAgICAg
cmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUsIENTU19QUk9QX1RPUCk7CiAgICAg
ICAgIGNhc2UgQ1NTX1BST1BfVU5JQ09ERV9CSURJOgotICAgICAgICAgICAgc3dpdGNoIChzdHls
ZS0+dW5pY29kZUJpZGkoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgVUJOb3JtYWw6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JN
QUwpOwotICAgICAgICAgICAgICAgIGNhc2UgRW1iZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTUJFRCk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBPdmVycmlkZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0JJRElfT1ZFUlJJREUpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnVuaWNvZGVCaWRpKCkp
OwogICAgICAgICBjYXNlIENTU19QUk9QX1ZFUlRJQ0FMX0FMSUdOOgogICAgICAgICAgICAgc3dp
dGNoIChzdHlsZS0+dmVydGljYWxBbGlnbigpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBCQVNF
TElORToKQEAgLTE0NjAsMTA0ICs3NjIsMzQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgICAgIGNhc2UgQkFTRUxJTkVfTUlERExFOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dF
QktJVF9CQVNFTElORV9NSURETEUpOwogICAgICAgICAgICAgICAgIGNhc2UgTEVOR1RIOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnZlcnRpY2FsQWxp
Z25MZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPnZlcnRpY2FsQWxpZ25MZW5ndGgoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICBjYXNlIENTU19QUk9QX1ZJU0lCSUxJVFk6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxl
LT52aXNpYmlsaXR5KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFZJU0lCTEU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxF
KTsKLSAgICAgICAgICAgICAgICBjYXNlIEhJRERFTjoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJRERFTik7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDT0xMQVBTRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0NPTExBUFNFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT52aXNpYmlsaXR5KCkpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX1dISVRFX1NQQUNFOgotICAgICAgICAgICAgc3dpdGNoIChzdHls
ZS0+d2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOT1JNQUw6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwp
OwotICAgICAgICAgICAgICAgIGNhc2UgUFJFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUFJFKTsKLSAgICAgICAgICAgICAgICBjYXNl
IFBSRV9XUkFQOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfUFJFX1dSQVApOwotICAgICAgICAgICAgICAgIGNhc2UgUFJFX0xJTkU6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9Q
UkVfTElORSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBOT1dSQVA6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1dSQVApOwotICAgICAg
ICAgICAgICAgIGNhc2UgS0hUTUxfTk9XUkFQOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9OT1dSQVApOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPndo
aXRlU3BhY2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfV0lET1dTOgogICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d2lkb3dzKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9XSURUSDoKICAgICAg
ICAgICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHNpemluZ0JveChyZW5kZXJlcikud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPndpZHRo
KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d2lk
dGgoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfV09SRF9CUkVBSzoKLSAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPndvcmRCcmVhaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb3JtYWxX
b3JkQnJlYWs6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICAgICAgICAgIGNhc2UgQnJlYWtBbGxXb3JkQnJl
YWs6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9CUkVBS19BTEwpOwotICAgICAgICAgICAgICAgIGNhc2UgQnJlYWtXb3JkQnJlYWs6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9C
UkVBS19XT1JEKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPndvcmRCcmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9X
T1JEX1NQQUNJTkc6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT53b3JkU3BhY2luZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9XT1JEX1dSQVA6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT53b3Jk
V3JhcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb3JtYWxXb3JkV3JhcDoKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBCcmVha1dvcmRXcmFwOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQlJFQUtfV09SRCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+d29yZFdyYXAoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9MSU5FX0JSRUFL
OgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+a2h0bWxMaW5lQnJlYWsoKSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgTEJOT1JNQUw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOwotICAgICAgICAgICAgICAgIGNhc2Ug
QUZURVJfV0hJVEVfU1BBQ0U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9BRlRFUl9XSElURV9TUEFDRSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+a2h0bWxMaW5l
QnJlYWsoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9OQlNQX01PREU6Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHN0eWxlLT5uYnNwTW9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBOQk5PUk1BTDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBTUEFDRToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NQQUNF
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5uYnNwTW9kZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01B
VENIX05FQVJFU1RfTUFJTF9CTE9DS1FVT1RFX0NPTE9SOgotICAgICAgICAgICAgc3dpdGNoIChz
dHlsZS0+bWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcigpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBCQ05PUk1BTDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBNQVRDSDoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X01BVENIKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0eWxlLT5tYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKCkpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX1JFU0laRToKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnJl
c2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSRVNJWkVfQk9USDoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVEgpOwotICAg
ICAgICAgICAgICAgIGNhc2UgUkVTSVpFX0hPUklaT05UQUw6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IT1JJWk9OVEFMKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIFJFU0laRV9WRVJUSUNBTDoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1ZFUlRJQ0FMKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFJFU0laRV9OT05FOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+cmVzaXplKCkpOwogICAgICAg
ICBjYXNlIENTU19QUk9QX1pfSU5ERVg6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmhhc0F1dG9a
SW5kZXgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQVVUTyk7CkBAIC0xNTk3LDM2ICs4MjksMjIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShmaXJzdFJlZ2lvbi5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
X1BST1BfX1dFQktJVF9BUFBFQVJBTkNFOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQXBw
ZWFyYW5jZShzdHlsZS0+YXBwZWFyYW5jZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPmFwcGVhcmFuY2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BS
T1BfX1dFQktJVF9GT05UX1NJWkVfREVMVEE6CiAgICAgICAgICAgICAvLyBOb3QgYSByZWFsIHN0
eWxlIHByb3BlcnR5IC0tIHVzZWQgYnkgdGhlIGVkaXRpbmcgZW5naW5lIC0tIHNvIGhhcyBubyBj
b21wdXRlZCB2YWx1ZS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfTUFSR0lOX0JPVFRPTV9DT0xMQVBTRToKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvck1hcmdpbkNvbGxhcHNlKHN0eWxlLT5tYXJnaW5Cb3R0b21Db2xsYXBzZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcmdpbkJvdHRvbUNv
bGxhcHNlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSR0lOX1RPUF9DT0xM
QVBTRToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck1hcmdpbkNvbGxhcHNlKHN0eWxlLT5t
YXJnaW5Ub3BDb2xsYXBzZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3R5bGUtPm1hcmdpblRvcENvbGxhcHNlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfUlRMX09SREVSSU5HOgogICAgICAgICAgICAgaWYgKHN0eWxlLT52aXN1YWxseU9y
ZGVyZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfVklTVUFMKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9MT0dJQ0FMKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1VTRVJfRFJB
RzoKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnVzZXJEcmFnKCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIERSQUdfQVVUTzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgICAgIGNhc2UgRFJBR19O
T05FOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTk9ORSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBEUkFHX0VMRU1FTlQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FTEVNRU5U
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dXNlckRyYWcoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9VU0VSX1NFTEVDVDoKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUt
PnVzZXJTZWxlY3QoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgU0VMRUNUX05PTkU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05F
KTsKLSAgICAgICAgICAgICAgICBjYXNlIFNFTEVDVF9URVhUOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoc3R5bGUtPnVzZXJTZWxlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9CT1JERVJfQk9UVE9NX0xFRlRfUkFESVVTOgogICAgICAgICAgICAgcmV0dXJuIGdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9SREVSX0JPVFRPTV9SSUdIVF9SQURJVVM6
CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDI2NTcyKQorKysgV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBQYWlyKiBwYWlyID0gbmV3IFBhaXIocGFyc2VkVmFsdWUxLCBwYXJzZWRWYWx1ZTIpOwotICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHBhaXIp
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KFBhc3NSZWZQdHI8UGFpcj4ocGFpcikpOwogICAgICAgICBpZiAocHJvcElkID09IENTU19QUk9Q
X19XRUJLSVRfQk9SREVSX1JBRElVUykgewogICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbNF0gPSB7IENTU19QUk9QX19XRUJLSVRfQk9SREVSX1RPUF9SSUdIVF9SQURJVVMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTX1BST1BfX1dFQktJVF9CT1JE
RVJfVE9QX0xFRlRfUkFESVVTLApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgQ1NTVmFsdWUqIENTU1Bh
cnNlcjo6cGFyc2VCYWNrZ3JvdW5kU2l6ZQogICAgIH0KICAgICAKICAgICBQYWlyKiBwYWlyID0g
bmV3IFBhaXIocGFyc2VkVmFsdWUxLCBwYXJzZWRWYWx1ZTIpOwotICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUocGFpcik7CisgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShQ
YXNzUmVmUHRyPFBhaXI+KHBhaXIpKTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQmFja2dy
b3VuZFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCAKQEAg
LTIyMzgsNyArMjIzOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VD
b3UKICAgICAgICAgbGlzdFN0eWxlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxzLCAoQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgaS0+dW5pdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShuZXcgQ291bnRlcihpZGVudGlmaWVyLnJlbGVhc2UoKSwgbGlz
dFN0eWxlLnJlbGVhc2UoKSwgc2VwYXJhdG9yLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoUGFzc1JlZlB0cjxDb3VudGVyPihuZXcgQ291bnRlcihpZGVudGlm
aWVyLnJlbGVhc2UoKSwgbGlzdFN0eWxlLnJlbGVhc2UoKSwgc2VwYXJhdG9yLnJlbGVhc2UoKSkp
KTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hhcGUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCkBAIC0yMjgzLDcgKzIyODMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaGFwZShp
bnQgcHJvcElkLCBiCiAgICAgICAgIGkrKzsKICAgICB9CiAgICAgaWYgKHZhbGlkKSB7Ci0gICAg
ICAgIGFkZFByb3BlcnR5KHByb3BJZCwgbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlY3QpLCBpbXBv
cnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShQYXNzUmVmUHRyPFJlY3Q+KHJlY3QpKSwgaW1wb3J0YW50KTsKICAgICAgICAgdmFsdWVMaXN0
LT5uZXh0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI5ODYsOCArMjk4Niw4
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXIoaW50IHByb3BJZCwKICAgICAgICAgICAg
ICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShuZXcgUGFpcihjb3Vu
dGVyTmFtZS5yZWxlYXNlKCksCi0gICAgICAgICAgICAgICAgICAgIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpKSk7CisgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShQYXNzUmVmUHRyPFBhaXI+KG5l
dyBQYWlyKGNvdW50ZXJOYW1lLnJlbGVhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKGksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSkpKSk7CiAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBJRDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDI2
NTcyKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsNiArMTYxLDM2IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShQYXMKICAgICBtX3ZhbHVlLnBhaXIgPSBwLnJlbGVhc2VSZWYoKTsKIH0KIAorQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAg
IHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgeworICAgICAgICBjYXNlIEF1dG86CisgICAgICAgICAg
ICBtX3R5cGUgPSBDU1NfSURFTlQ7CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9BVVRPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6Rml4ZWQ6
CisgICAgICAgICAgICBtX3R5cGUgPSBDU1NfUFg7CisgICAgICAgICAgICBtX3ZhbHVlLm51bSA9
IGxlbmd0aC52YWx1ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50cmlu
c2ljOgorICAgICAgICAgICAgbV90eXBlID0gQ1NTX0lERU5UOworICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfSU5UUklOU0lDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWluSW50cmluc2ljOgorICAgICAgICAgICAgbV90eXBlID0gQ1NTX0lERU5UOworICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUlOX0lOVFJJTlNJQzsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgICAgICBtX3R5cGUgPSBD
U1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgICAgIG1fdmFsdWUubnVtID0gbGVuZ3RoLnBlcmNlbnQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlbGF0aXZlOgorICAgICAgICBj
YXNlIFN0YXRpYzoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCiBDU1NQcmltaXRpdmVWYWx1ZTo6fkNTU1ByaW1pdGl2ZVZh
bHVlKCkKIHsKICAgICBjbGVhbnVwKCk7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHJl
dmlzaW9uIDI2NTcyKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
dW50ZXI7CiBjbGFzcyBEYXNoYm9hcmRSZWdpb247CitzdHJ1Y3QgTGVuZ3RoOwogY2xhc3MgUGFp
cjsKIGNsYXNzIFJlY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKQEAgLTgwLDYgKzgxLDggQEAgcHVi
bGljOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlKHVuc2lnbmVkIGNvbG9yKTsgLy8gUkdCIHZhbHVl
CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUoUGFzc1JlZlB0cjxQYWlyPik7CiAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUoUGFzc1JlZlB0cjxEYXNoYm9hcmRSZWdpb24+KTsgLy8gRklYTUU6IFdoeSBpcyBk
YXNoYm9hcmQgcmVnaW9uIGEgcHJpbWl0aXZlIHZhbHVlPyBUaGlzIG1ha2VzIG5vIHNlbnNlLgor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExlbmd0aCYpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVlKFQpOyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAogCiAgICAgdmlydHVhbCB+Q1NTUHJpbWl0aXZlVmFsdWUoKTsKIApAQCAt
MTMzLDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGNzc1Zh
bHVlVHlwZSgpIGNvbnN0OwogCiAgICAgaW50IGdldElkZW50KCk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gb3BlcmF0b3IgVCgpIGNvbnN0OyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAogCiAgICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIGJvb2wgPSBmYWxzZSk7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwpA
QCAtMTUxLDYgKzE1NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFBhaXIqIHBhaXI7CiAgICAg
ICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uOwogICAgIH0gbV92YWx1ZTsKKworcHJpdmF0ZToK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShUKiB0KTsgLy8gY29t
cGlsZS10aW1lIGd1YXJkCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gb3BlcmF0b3IgVCooKTsg
Ly8gY29tcGlsZS10aW1lIGd1YXJkCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5
YWtvdiA8YXBAbnlwb3AuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIAorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgor
ICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzX2gKKyNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5nc19oCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShFQm9yZGVyU3R5bGUgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7Cisg
ICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQk5PTkU6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QkhJRERFTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hJRERFTjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElOU0VUOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfSU5TRVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHUk9PVkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9HUk9PVkU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSSURHRToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX1JJREdFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgT1VUU0VUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfT1VUU0VUOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9UVEVEOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfRE9UVEVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREFTSEVEOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfREFTSEVE
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09MSUQ6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TT0xJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERPVUJMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0RPVUJM
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChFQm9yZGVyU3R5bGUpKG1fdmFsdWUuaWRlbnQgLSBDU1NfVkFMX05PTkUpOworfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29t
cG9zaXRlT3BlcmF0b3IgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNo
IChlKSB7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9DTEVBUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvbXBvc2l0ZUNvcHk6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DT1BZ
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3ZlcjoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NPVVJDRV9PVkVSOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TT1VSQ0VfSU47CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9TT1VSQ0VfT1VUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1NPVVJDRV9BVE9QOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
REVTVElOQVRJT05fT1ZFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBv
c2l0ZURlc3RpbmF0aW9uSW46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9E
RVNUSU5BVElPTl9JTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBvc2l0
ZURlc3RpbmF0aW9uT3V0OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfREVT
VElOQVRJT05fT1VUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29tcG9zaXRl
RGVzdGluYXRpb25BdG9wOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfREVT
VElOQVRJT05fQVRPUDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBvc2l0
ZVhPUjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1hPUjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9QTFVTX0RBUktFUjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIENvbXBvc2l0ZUhpZ2hsaWdodDoKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0hJR0hMSUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENvbXBvc2l0ZVBsdXNMaWdodGVyOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfUExVU19MSUdIVEVSOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29tcG9zaXRlT3BlcmF0
b3IoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNl
IENTU19WQUxfQ0xFQVI6CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlQ2xlYXI7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9DT1BZOgorICAgICAgICAgICAgcmV0dXJuIENvbXBvc2l0ZUNvcHk7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TT1VSQ0VfT1ZFUjoKKyAgICAgICAgICAgIHJldHVybiBD
b21wb3NpdGVTb3VyY2VPdmVyOworICAgICAgICBjYXNlIENTU19WQUxfU09VUkNFX0lOOgorICAg
ICAgICAgICAgcmV0dXJuIENvbXBvc2l0ZVNvdXJjZUluOworICAgICAgICBjYXNlIENTU19WQUxf
U09VUkNFX09VVDoKKyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVTb3VyY2VPdXQ7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9TT1VSQ0VfQVRPUDoKKyAgICAgICAgICAgIHJldHVybiBDb21wb3Np
dGVTb3VyY2VBdG9wOworICAgICAgICBjYXNlIENTU19WQUxfREVTVElOQVRJT05fT1ZFUjoKKyAg
ICAgICAgICAgIHJldHVybiBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9ERVNUSU5BVElPTl9JTjoKKyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVEZXN0
aW5hdGlvbkluOworICAgICAgICBjYXNlIENTU19WQUxfREVTVElOQVRJT05fT1VUOgorICAgICAg
ICAgICAgcmV0dXJuIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OworICAgICAgICBjYXNlIENTU19W
QUxfREVTVElOQVRJT05fQVRPUDoKKyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVEZXN0aW5h
dGlvbkF0b3A7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9YT1I6CisgICAgICAgICAgICByZXR1cm4g
Q29tcG9zaXRlWE9SOworICAgICAgICBjYXNlIENTU19WQUxfUExVU19EQVJLRVI6CisgICAgICAg
ICAgICByZXR1cm4gQ29tcG9zaXRlUGx1c0RhcmtlcjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0hJ
R0hMSUdIVDoKKyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVIaWdobGlnaHQ7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9QTFVTX0xJR0hURVI6CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRl
UGx1c0xpZ2h0ZXI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBDb21wb3NpdGVDbGVhcjsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVBcHBlYXJhbmNlIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIE5vQXBwZWFyYW5jZToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDaGVja2JveEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9DSEVDS0JPWDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJhZGlvQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X1JBRElPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHVzaEJ1dHRvbkFwcGVh
cmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9QVVNIX0JVVFRPTjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvbkFwcGVhcmFuY2U6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TUVVBUkVfQlVUVE9OOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQnV0dG9uQXBwZWFyYW5jZToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JVVFRPTjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEJ1dHRvbkJldmVsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0JVVFRPTl9CRVZFTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIExpc3Rib3hBcHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfTElTVEJPWDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExpc3RJdGVt
QXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xJU1RJVEVN
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVudWxpc3RBcHBlYXJhbmNlOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUVOVUxJU1Q7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNZW51bGlzdEJ1dHRvbkFwcGVhcmFuY2U6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9NRU5VTElTVF9CVVRUT047CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNZW51bGlzdFRleHRBcHBlYXJhbmNlOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUVOVUxJU1RfVEVYVDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1lbnVsaXN0VGV4dEZpZWxkQXBwZWFyYW5jZToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01FTlVMSVNUX1RFWFRGSUVMRDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGJhckJ1dHRvblVwQXBwZWFyYW5jZToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUkJVVFRPTl9VUDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGJhckJ1dHRvbkRvd25BcHBlYXJh
bmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0NST0xMQkFSQlVUVE9O
X0RPV047CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25M
ZWZ0QXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9M
TEJBUkJVVFRPTl9MRUZUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xs
YmFyQnV0dG9uUmlnaHRBcHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfU0NST0xMQkFSQlVUVE9OX1JJR0hUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2Nyb2xsYmFyVHJhY2tIb3Jpem9udGFsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUlRSQUNLX0hPUklaT05UQUw7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJUcmFja1ZlcnRpY2FsQXBwZWFyYW5j
ZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUlRSQUNLX1ZF
UlRJQ0FMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyVGh1bWJI
b3Jpem9udGFsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X1NDUk9MTEJBUlRIVU1CX0hPUklaT05UQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTY3JvbGxiYXJUaHVtYlZlcnRpY2FsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUlRIVU1CX1ZFUlRJQ0FMOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyR3JpcHBlckhvcml6b250YWxBcHBlYXJhbmNl
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0NST0xMQkFSR1JJUFBFUl9I
T1JJWk9OVEFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyR3Jp
cHBlclZlcnRpY2FsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1NDUk9MTEJBUkdSSVBQRVJfVkVSVElDQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTbGlkZXJIb3Jpem9udGFsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX1NMSURFUl9IT1JJWk9OVEFMOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU2xpZGVyVmVydGljYWxBcHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfU0xJREVSX1ZFUlRJQ0FMOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU2xpZGVyVGh1bWJIb3Jpem9udGFsQXBwZWFyYW5jZToKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NMSURFUlRIVU1CX0hPUklaT05UQUw7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTbGlkZXJUaHVtYlZlcnRpY2FsQXBwZWFyYW5jZToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NMSURFUlRIVU1CX1ZFUlRJQ0FM
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FyZXRBcHBlYXJhbmNlOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ0FSRVQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTZWFyY2hGaWVsZEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9TRUFSQ0hGSUVMRDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNlYXJjaEZpZWxkRGVjb3JhdGlvbkFwcGVhcmFuY2U6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9ERUNPUkFUSU9OOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbkFwcGVh
cmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9S
RVNVTFRTX0RFQ09SQVRJT047CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25BcHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfU0VBUkNIRklFTERfUkVTVUxUU19CVVRUT047CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkFwcGVhcmFuY2U6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9DQU5DRUxfQlVUVE9O
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGV4dEZpZWxkQXBwZWFyYW5jZToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFRGSUVMRDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRleHRBcmVhQXBwZWFyYW5jZToKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFRBUkVBOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RUFwcGVhcmFuY2UoKSBjb25zdAoreworICAgIGlmIChtX3ZhbHVlLmlkZW50ID09IENTU19WQUxf
Tk9ORSkKKyAgICAgICAgcmV0dXJuIE5vQXBwZWFyYW5jZTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiBFQXBwZWFyYW5jZShtX3ZhbHVlLmlkZW50IC0gQ1NTX1ZBTF9DSEVDS0JPWCArIDEpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoRUJhY2tncm91bmRCb3ggZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dp
dGNoIChlKSB7CisgICAgICAgIGNhc2UgQkdCT1JERVI6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9CT1JERVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBC
R1BBRERJTkc6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9QQURESU5HOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkdDT05URU5UOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ09OVEVOVDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVC
YWNrZ3JvdW5kQm94KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX0JPUkRFUjoKKyAgICAgICAgICAgIHJldHVybiBCR0JPUkRFUjsK
KyAgICAgICAgY2FzZSBDU1NfVkFMX1BBRERJTkc6CisgICAgICAgICAgICByZXR1cm4gQkdQQURE
SU5HOworICAgICAgICBjYXNlIENTU19WQUxfQ09OVEVOVDoKKyAgICAgICAgICAgIHJldHVybiBC
R0NPTlRFTlQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBC
R0JPUkRFUjsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEVCYWNrZ3JvdW5kUmVwZWF0IGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5U
KQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFJFUEVBVDoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JFUEVBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFJFUEVBVF9YOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
UkVQRUFUX1g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRVBFQVRfWToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JFUEVBVF9ZOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTk9fUkVQRUFUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfTk9fUkVQRUFUOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJhY2tncm91bmRS
ZXBlYXQoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBj
YXNlIENTU19WQUxfUkVQRUFUOgorICAgICAgICAgICAgcmV0dXJuIFJFUEVBVDsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX1JFUEVBVF9YOgorICAgICAgICAgICAgcmV0dXJuIFJFUEVBVF9YOworICAg
ICAgICBjYXNlIENTU19WQUxfUkVQRUFUX1k6CisgICAgICAgICAgICByZXR1cm4gUkVQRUFUX1k7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT19SRVBFQVQ6CisgICAgICAgICAgICByZXR1cm4gTk9f
UkVQRUFUOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUkVQ
RUFUOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUJveEFsaWdubWVudCBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAg
ICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBCU1RSRVRDSDoKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX1NUUkVUQ0g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBCU1RBUlQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TVEFSVDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJDRU5URVI6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DRU5URVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBCRU5EOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRU5EOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkJBU0VMSU5FOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkFTRUxJTkU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBCSlVTVElGWToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X0pVU1RJRlk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94QWxpZ25tZW50KCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NUUkVU
Q0g6CisgICAgICAgICAgICByZXR1cm4gQlNUUkVUQ0g7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9T
VEFSVDoKKyAgICAgICAgICAgIHJldHVybiBCU1RBUlQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9F
TkQ6CisgICAgICAgICAgICByZXR1cm4gQkVORDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0NFTlRF
UjoKKyAgICAgICAgICAgIHJldHVybiBCQ0VOVEVSOworICAgICAgICBjYXNlIENTU19WQUxfQkFT
RUxJTkU6CisgICAgICAgICAgICByZXR1cm4gQkJBU0VMSU5FOworICAgICAgICBjYXNlIENTU19W
QUxfSlVTVElGWToKKyAgICAgICAgICAgIHJldHVybiBCSlVTVElGWTsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEJTVFJFVENIOworfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUJveERpcmVjdGlv
biBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAg
ICAgY2FzZSBCTk9STUFMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9S
TUFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQlJFVkVSU0U6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SRVZFUlNFOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRUJveERpcmVjdGlvbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6CisgICAgICAgICAgICByZXR1cm4gQk5PUk1B
TDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1JFVkVSU0U6CisgICAgICAgICAgICByZXR1cm4gQlJF
VkVSU0U7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCTk9S
TUFMOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUJveExpbmVzIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3
aXRjaCAoZSkgeworICAgICAgICBjYXNlIFNJTkdMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1NJTkdMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1V
TFRJUExFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTVVMVElQTEU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94TGluZXMoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92
YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfU0lOR0xFOgorICAgICAgICAgICAg
cmV0dXJuIFNJTkdMRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX01VTFRJUExFOgorICAgICAgICAg
ICAgcmV0dXJuIE1VTFRJUExFOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gU0lOR0xFOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUJveE9yaWVudCBlKQorICAgIDogbV90eXBlKENTU19JREVO
VCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBIT1JJWk9OVEFMOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSE9SSVpPTlRBTDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFZFUlRJQ0FMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfVkVSVElDQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94T3JpZW50KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0hPUklaT05UQUw6CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9JTkxJTkVfQVhJUzoKKyAgICAgICAg
ICAgIHJldHVybiBIT1JJWk9OVEFMOworICAgICAgICBjYXNlIENTU19WQUxfVkVSVElDQUw6Cisg
ICAgICAgICAgICByZXR1cm4gVkVSVElDQUw7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBIT1JJWk9OVEFMOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNhcHRpb25TaWRlIGUpCisgICAgOiBt
X3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIENBUExF
RlQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MRUZUOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0FQUklHSFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9SSUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENB
UFRPUDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RPUDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENBUEJPVFRPTToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0JPVFRPTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDYXB0aW9uU2lk
ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9MRUZUOgorICAgICAgICAgICAgcmV0dXJuIENBUExFRlQ7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9SSUdIVDoKKyAgICAgICAgICAgIHJldHVybiBDQVBSSUdIVDsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX1RPUDoKKyAgICAgICAgICAgIHJldHVybiBDQVBUT1A7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9CT1RUT006CisgICAgICAgICAgICByZXR1cm4gQ0FQQk9UVE9NOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ0FQVE9QOworfQorCit0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNsZWFyIGUp
CisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBj
YXNlIENOT05FOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENMRUZUOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfTEVGVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENSSUdIVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JJR0hUOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0JPVEg6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9CT1RIOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNsZWFyKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X05PTkU6CisgICAgICAgICAgICByZXR1cm4gQ05PTkU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9M
RUZUOgorICAgICAgICAgICAgcmV0dXJuIENMRUZUOworICAgICAgICBjYXNlIENTU19WQUxfUklH
SFQ6CisgICAgICAgICAgICByZXR1cm4gQ1JJR0hUOworICAgICAgICBjYXNlIENTU19WQUxfQk9U
SDoKKyAgICAgICAgICAgIHJldHVybiBDQk9USDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIENOT05FOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUN1cnNvciBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9DUk9TU0hBSVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDVVJTT1JfREVGQVVMVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0RF
RkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1BPSU5URVI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX01PVkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
VVJTT1JfQ0VMTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NFTEw7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfVkVSVElDQUxfVEVYVDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1ZFUlRJQ0FMX1RFWFQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfQ09OVEVYVF9NRU5VOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ09OVEVYVF9NRU5VOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0FMSUFTOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfQUxJQVM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJT
T1JfQ09QWToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NPUFk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfTk9ORToKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDVVJTT1JfUFJPR1JFU1M6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9QUk9HUkVTUzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9OT19E
Uk9QOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9fRFJPUDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9OT1RfQUxMT1dFRDoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PVF9BTExPV0VEOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX0lOOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfX1dFQktJVF9aT09NX0lOOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX09VVDoKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX19XRUJLSVRfWk9PTV9PVVQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9FX1JFU0laRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENV
UlNPUl9ORV9SRVNJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ORV9S
RVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpF
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTldfUkVTSVpFOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX05fUkVTSVpFOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfTl9SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDVVJTT1JfU0VfUkVTSVpFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfU0VfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VS
U09SX1NXX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NXX1JF
U0laRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9TX1JFU0laRToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NfUkVTSVpFOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX1dfUkVTSVpFOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfV19SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDVVJTT1JfRVdfUkVTSVpFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfRVdfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09S
X05TX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05TX1JFU0la
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05FU1dfUkVTSVpFOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTldTRV9SRVNJWkU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDVVJTT1JfQ09MX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0NPTF9SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDVVJTT1JfUk9XX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1JPV19SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1Jf
VEVYVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfV0FJVDoKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX1dBSVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDVVJTT1JfSEVMUDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hFTFA7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfQUxMX1NDUk9MTDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FMTF9TQ1JPTEw7CisgICAgICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBFQ3Vyc29yKCkgY29uc3QKK3sKKyAgICBpZiAobV92YWx1ZS5pZGVudCA9PSBD
U1NfVkFMX0NPUFkpCisgICAgICAgIHJldHVybiBDVVJTT1JfQ09QWTsKKyAgICBlbHNlIGlmICht
X3ZhbHVlLmlkZW50ID09IENTU19WQUxfTk9ORSkKKyAgICAgICAgcmV0dXJuIENVUlNPUl9OT05F
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChFQ3Vyc29yKShtX3ZhbHVlLmlkZW50IC0gQ1NT
X1ZBTF9BVVRPKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEVEaXNwbGF5IGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQorewor
ICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIElOTElORToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0lOTElORTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEJMT0NLOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkxPQ0s7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMSVNUX0lURU06CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MSVNUX0lURU07CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBSVU5fSU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9S
VU5fSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QQUNUOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ09NUEFDVDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIElOTElORV9CTE9DSzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX0lOTElORV9CTE9DSzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRBQkxFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEFCTEU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkxJTkVfVEFCTEU6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9JTkxJTkVfVEFCTEU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9UQUJMRV9ST1dfR1JPVVA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9UQUJMRV9IRUFERVJfR1JPVVA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBUQUJMRV9GT09URVJfR1JPVVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9UQUJMRV9GT09URVJfR1JPVVA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
QUJMRV9ST1c6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UQUJMRV9ST1c7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UQUJMRV9DT0xVTU5fR1JPVVA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU46CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UQUJMRV9DT0xVTU47CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUQUJMRV9DRUxMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfVEFCTEVfQ0VMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRB
QkxFX0NBUFRJT046CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UQUJMRV9D
QVBUSU9OOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9YOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfX1dFQktJVF9CT1g7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJTkxJTkVfQk9YOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfX1dFQktJVF9JTkxJTkVfQk9YOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTk9ORToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSgpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsdWUu
aWRlbnQgPT0gQ1NTX1ZBTF9OT05FKQorICAgICAgICByZXR1cm4gTk9ORTsKKyAgICBlbHNlCisg
ICAgICAgIHJldHVybiBFRGlzcGxheShtX3ZhbHVlLmlkZW50IC0gQ1NTX1ZBTF9JTkxJTkUpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoRUVtcHR5Q2VsbCBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2gg
KGUpIHsKKyAgICAgICAgY2FzZSBTSE9XOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfU0hPVzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhJREU6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ISURFOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRUVtcHR5Q2VsbCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9TSE9XOgorICAgICAgICAgICAgcmV0dXJuIFNIT1c7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9ISURFOgorICAgICAgICAgICAgcmV0dXJuIEhJREU7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTSE9XOworfQorCit0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUZsb2F0IGUp
CisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBj
YXNlIEZOT05FOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZMRUZUOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfTEVGVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEZSSUdIVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JJR0hUOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRUZsb2F0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUu
aWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0xFRlQ6CisgICAgICAgICAgICByZXR1cm4g
RkxFRlQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9SSUdIVDoKKyAgICAgICAgICAgIHJldHVybiBG
UklHSFQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICBjYXNlIENTU19WQUxf
Q0VOVEVSOiAgLy8gTm9uLXN0YW5kYXJkIENTUyB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIEZO
T05FOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRk5PTkU7
Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShFS0hUTUxMaW5lQnJlYWsgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAg
c3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgTEJOT1JNQUw6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9OT1JNQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBRlRFUl9XSElURV9TUEFDRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X0FGVEVSX1dISVRFX1NQQUNFOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUtIVE1MTGluZUJyZWFr
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX0FGVEVSX1dISVRFX1NQQUNFOgorICAgICAgICAgICAgcmV0dXJuIEFGVEVSX1dISVRF
X1NQQUNFOworICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgorICAgICAgICAgICAgcmV0dXJu
IExCTk9STUFMOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
TEJOT1JNQUw7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShFTGlzdFN0eWxlUG9zaXRpb24gZSkKKyAgICA6IG1fdHlwZShDU1NfSURF
TlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgT1VUU0lERToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX09VVFNJREU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBJTlNJREU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9JTlNJREU7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlUG9zaXRpb24oKSBjb25z
dAoreworICAgIHJldHVybiAoRUxpc3RTdHlsZVBvc2l0aW9uKShtX3ZhbHVlLmlkZW50IC0gQ1NT
X1ZBTF9PVVRTSURFKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEVMaXN0U3R5bGVUeXBlIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIExOT05FOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERJU0M6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ESVND
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0lSQ0xFOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ0lSQ0xFOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU1FVQVJFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1FV
QVJFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTERFQ0lNQUw6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ERUNJTUFMOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgREVDSU1BTF9MRUFESU5HX1pFUk86CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9ERUNJTUFMX0xFQURJTkdfWkVSTzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIExPV0VSX1JPTUFOOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfTE9XRVJfUk9NQU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBV
UFBFUl9ST01BTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1VQUEVSX1JP
TUFOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTE9XRVJfR1JFRUs6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MT1dFUl9HUkVFSzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIExPV0VSX0FMUEhBOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfTE9XRVJfQUxQSEE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBMT1dFUl9MQVRJTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xP
V0VSX0xBVElOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVVBQRVJfQUxQSEE6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9VUFBFUl9BTFBIQTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQUEVSX0xBVElOOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfVVBQRVJfTEFUSU47CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBIRUJSRVc6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9I
RUJSRVc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBUk1FTklBTjoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FSTUVOSUFOOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0VPUkdJQU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9HRU9SR0lBTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENKS19J
REVPR1JBUEhJQzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NKS19JREVP
R1JBUEhJQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhJUkFHQU5BOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSElSQUdBTkE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBLQVRBS0FOQToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX0tBVEFLQU5BOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSElS
QUdBTkFfSVJPSEE6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ISVJBR0FO
QV9JUk9IQTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtBVEFLQU5BX0lST0hB
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfS0FUQUtBTkFfSVJPSEE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICAg
ICAgcmV0dXJuIExOT05FOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEVM
aXN0U3R5bGVUeXBlKG1fdmFsdWUuaWRlbnQgLSBDU1NfVkFMX0RJU0MpOworICAgIH0KK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVN
YXJnaW5Db2xsYXBzZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2gg
KGUpIHsKKyAgICAgICAgY2FzZSBNQ09MTEFQU0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9DT0xMQVBTRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1T
RVBBUkFURToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NFUEFSQVRFOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTURJU0NBUkQ6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ESVNDQVJEOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1h
cmdpbkNvbGxhcHNlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX0NPTExBUFNFOgorICAgICAgICAgICAgcmV0dXJuIE1DT0xMQVBT
RTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NFUEFSQVRFOgorICAgICAgICAgICAgcmV0dXJuIE1T
RVBBUkFURTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0RJU0NBUkQ6CisgICAgICAgICAgICByZXR1
cm4gTURJU0NBUkQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBNQ09MTEFQU0U7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShFTWFycXVlZUJlaGF2aW9yIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIE1OT05FOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE1TQ1JPTEw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9T
Q1JPTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNU0xJREU6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TTElERTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE1BTFRFUk5BVEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9BTFRFUk5BVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTWFycXVlZUJlaGF2aW9yKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX05PTkU6CisgICAgICAgICAgICByZXR1cm4gTU5PTkU7CisgICAgICAgIGNhc2UgQ1NTX1ZB
TF9TQ1JPTEw6CisgICAgICAgICAgICByZXR1cm4gTVNDUk9MTDsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX1NMSURFOgorICAgICAgICAgICAgcmV0dXJuIE1TTElERTsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX0FMVEVSTkFURToKKyAgICAgICAgICAgIHJldHVybiBNQUxURVJOQVRFOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTU5PTkU7Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFTWFycXVlZURp
cmVjdGlvbiBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsK
KyAgICAgICAgY2FzZSBNRk9SV0FSRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX0ZPUldBUkRTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTUJBQ0tXQVJE
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkFDS1dBUkRTOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTUFVVE86CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9BVVRPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVVQ
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVVA7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNRE9XTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX0RPV047CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNTEVGVDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xFRlQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBNUklHSFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9SSUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVNYXJxdWVlRGlyZWN0aW9uKCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0ZPUldBUkRTOgorICAgICAgICAgICAgcmV0dXJuIE1GT1JXQVJEOworICAgICAgICBjYXNlIENT
U19WQUxfQkFDS1dBUkRTOgorICAgICAgICAgICAgcmV0dXJuIE1CQUNLV0FSRDsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX0FVVE86CisgICAgICAgICAgICByZXR1cm4gTUFVVE87CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9BSEVBRDoKKyAgICAgICAgY2FzZSBDU1NfVkFMX1VQOiAvLyBXZSBkb24ndCBz
dXBwb3J0IHZlcnRpY2FsIGxhbmd1YWdlcywgc28gQUhFQUQganVzdCBtYXBzIHRvIFVQLgorICAg
ICAgICAgICAgcmV0dXJuIE1VUDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1JFVkVSU0U6CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9ET1dOOiAvLyBSRVZFUlNFIGp1c3QgbWFwcyB0byBET1dOLCBzaW5j
ZSB3ZSBkb24ndCBkbyB2ZXJ0aWNhbCB0ZXh0LgorICAgICAgICAgICAgcmV0dXJuIE1ET1dOOwor
ICAgICAgICBjYXNlIENTU19WQUxfTEVGVDoKKyAgICAgICAgICAgIHJldHVybiBNTEVGVDsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX1JJR0hUOgorICAgICAgICAgICAgcmV0dXJuIE1SSUdIVDsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1BVVRPOworfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRU1h
dGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQp
Cit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQkNOT1JNQUw6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT1JNQUw7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBNQVRDSDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01B
VENIOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29s
b3IoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNl
IENTU19WQUxfTk9STUFMOgorICAgICAgICAgICAgcmV0dXJuIEJDTk9STUFMOworICAgICAgICBj
YXNlIENTU19WQUxfTUFUQ0g6CisgICAgICAgICAgICByZXR1cm4gTUFUQ0g7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCQ05PUk1BTDsKK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVOQlNQTW9k
ZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAg
ICAgY2FzZSBOQk5PUk1BTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05P
Uk1BTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNQQUNFOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1BBQ0U7CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
TkJTUE1vZGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAg
ICBjYXNlIENTU19WQUxfU1BBQ0U6CisgICAgICAgICAgICByZXR1cm4gU1BBQ0U7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9OT1JNQUw6CisgICAgICAgICAgICByZXR1cm4gTkJOT1JNQUw7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOQk5PUk1BTDsKK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVP
dmVyZmxvdyBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsK
KyAgICAgICAgY2FzZSBPVklTSUJMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1ZJU0lCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPSElEREVOOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSElEREVOOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgT1NDUk9MTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX1NDUk9MTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9BVVRP
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE9NQVJRVUVFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfX1dFQktJVF9NQVJRVUVFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgT09WRVJMQVk6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9PVkVS
TEFZOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEU6CisgICAg
ICAgICAgICByZXR1cm4gT1ZJU0lCTEU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9ISURERU46Cisg
ICAgICAgICAgICByZXR1cm4gT0hJRERFTjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NDUk9MTDoK
KyAgICAgICAgICAgIHJldHVybiBPU0NST0xMOworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoK
KyAgICAgICAgICAgIHJldHVybiBPQVVUTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX19XRUJLSVRf
TUFSUVVFRToKKyAgICAgICAgICAgIHJldHVybiBPTUFSUVVFRTsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX09WRVJMQVk6CisgICAgICAgICAgICByZXR1cm4gT09WRVJMQVk7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBPVklTSUJMRTsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVQYWdlQnJlYWsg
ZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAg
IGNhc2UgUEJBVVRPOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBCQUxXQVlTOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQUxXQVlTOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUEJBVk9JRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FW
T0lEOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBhZ2VCcmVhaygpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAg
ICAgICAgcmV0dXJuIFBCQVVUTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0xFRlQ6CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9SSUdIVDoKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FMV0FZUzoKKyAgICAg
ICAgICAgIHJldHVybiBQQkFMV0FZUzsgLy8gQ1NTMi4xOiAiQ29uZm9ybWluZyB1c2VyIGFnZW50
cyBtYXkgbWFwIGxlZnQvcmlnaHQgdG8gYWx3YXlzLiIKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FW
T0lEOgorICAgICAgICAgICAgcmV0dXJuIFBCQVZPSUQ7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBQQkFVVE87Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFUG9zaXRpb24gZSkKKyAgICA6IG1f
dHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgU3RhdGlj
UG9zaXRpb246CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TVEFUSUM7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWxhdGl2ZVBvc2l0aW9uOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUkVMQVRJVkU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBYnNvbHV0ZVBvc2l0aW9uOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfQUJTT0xVVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBGaXhlZFBvc2l0aW9uOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRklY
RUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUG9zaXRpb24oKSBjb25zdAoreworICAgIHN3aXRj
aCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfU1RBVElDOgorICAgICAg
ICAgICAgcmV0dXJuIFN0YXRpY1Bvc2l0aW9uOworICAgICAgICBjYXNlIENTU19WQUxfUkVMQVRJ
VkU6CisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVQb3NpdGlvbjsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX0FCU09MVVRFOgorICAgICAgICAgICAgcmV0dXJuIEFic29sdXRlUG9zaXRpb247Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9GSVhFRDoKKyAgICAgICAgICAgIHJldHVybiBGaXhlZFBvc2l0
aW9uOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RhdGlj
UG9zaXRpb247Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShFUmVzaXplIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAg
IHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFJFU0laRV9CT1RIOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfQk9USDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJFU0laRV9IT1JJWk9OVEFMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfSE9SSVpPTlRBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFU0laRV9W
RVJUSUNBTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1ZFUlRJQ0FMOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVTSVpFX05PTkU6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVJl
c2l6ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9CT1RIOgorICAgICAgICAgICAgcmV0dXJuIFJFU0laRV9CT1RIOworICAgICAg
ICBjYXNlIENTU19WQUxfSE9SSVpPTlRBTDoKKyAgICAgICAgICAgIHJldHVybiBSRVNJWkVfSE9S
SVpPTlRBTDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1ZFUlRJQ0FMOgorICAgICAgICAgICAgcmV0
dXJuIFJFU0laRV9WRVJUSUNBTDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gRGVwZW5kcyBvbiBzZXR0aW5ncywgdGh1cyBz
aG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgICAgICAgICAgcmV0dXJuIFJFU0la
RV9OT05FOworICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKKyAgICAgICAgICAgIHJldHVybiBS
RVNJWkVfTk9ORTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFJFU0laRV9OT05FOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRVRhYmxlTGF5b3V0IGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5U
KQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFRBVVRPOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRGSVhFRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0ZJWEVE
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRhYmxlTGF5b3V0KCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0ZJWEVEOgorICAgICAg
ICAgICAgcmV0dXJuIFRGSVhFRDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86CisgICAgICAg
ICAgICByZXR1cm4gVEFVVE87CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBUQVVUTzsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEVUZXh0QWxpZ24gZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQp
Cit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgVEFBVVRPOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIExFRlQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MRUZUOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUklHSFQ6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9SSUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENFTlRFUjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NFTlRFUjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEpVU1RJRlk6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9KVVNUSUZZOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9fV0VCS0lUX0xFRlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRf
UklHSFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9fV0VCS0lUX1JJR0hU
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX19XRUJLSVRfQ0VOVEVSOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRVRleHRBbGlnbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlk
ZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TVEFSVDoKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0VORDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBEZXBlbmRzIG9uIGRp
cmVjdGlvbiwgdGh1cyBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgICAgICAg
ICAgcmV0dXJuIExFRlQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gKEVU
ZXh0QWxpZ24pKG1fdmFsdWUuaWRlbnQgLSBDU1NfVkFMX19XRUJLSVRfQVVUTyk7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoRVRleHRTZWN1cml0eSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0
Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBUU05PTkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNESVND
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRElTQzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRTQ0lSQ0xFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfQ0lSQ0xFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFNT
UVVBUkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TUVVBUkU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFVGV4dFNlY3VyaXR5KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1f
dmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICBy
ZXR1cm4gVFNOT05FOworICAgICAgICBjYXNlIENTU19WQUxfRElTQzoKKyAgICAgICAgICAgIHJl
dHVybiBUU0RJU0M7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9DSVJDTEU6CisgICAgICAgICAgICBy
ZXR1cm4gVFNDSVJDTEU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TUVVBUkU6CisgICAgICAgICAg
ICByZXR1cm4gVFNTUVVBUkU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBUU05PTkU7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dFRyYW5zZm9ybSBlKQorICAgIDogbV90eXBlKENTU19J
REVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBDQVBJVEFMSVpFOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ0FQSVRBTElaRTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFVQUEVSQ0FTRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1VQUEVSQ0FTRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IExPV0VSQ0FTRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xPV0VSQ0FT
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRUTk9ORToKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVGV4
dFRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9DQVBJVEFMSVpFOgorICAgICAgICAgICAgcmV0dXJuIENBUElUQUxJ
WkU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9VUFBFUkNBU0U6CisgICAgICAgICAgICByZXR1cm4g
VVBQRVJDQVNFOworICAgICAgICBjYXNlIENTU19WQUxfTE9XRVJDQVNFOgorICAgICAgICAgICAg
cmV0dXJuIExPV0VSQ0FTRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAg
ICByZXR1cm4gVFROT05FOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gVFROT05FOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRVVuaWNvZGVCaWRpIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5U
KQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFVCTm9ybWFsOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9STUFMOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRW1iZWQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9F
TUJFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE92ZXJyaWRlOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQklESV9PVkVSUklERTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVVbmljb2RlQmlkaSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlk
ZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6CisgICAgICAgICAgICByZXR1cm4g
VUJOb3JtYWw7IAorICAgICAgICBjYXNlIENTU19WQUxfRU1CRUQ6CisgICAgICAgICAgICByZXR1
cm4gRW1iZWQ7IAorICAgICAgICBjYXNlIENTU19WQUxfQklESV9PVkVSUklERToKKyAgICAgICAg
ICAgIHJldHVybiBPdmVycmlkZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFVCTm9ybWFsOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVVzZXJEcmFnIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIERSQUdfQVVUTzoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEUkFHX05PTkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFJBR19FTEVNRU5U
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRUxFTUVOVDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVVc2VyRHJhZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlk
ZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAgICAgICAgcmV0dXJuIERS
QUdfQVVUTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICByZXR1cm4g
RFJBR19OT05FOworICAgICAgICBjYXNlIENTU19WQUxfRUxFTUVOVDoKKyAgICAgICAgICAgIHJl
dHVybiBEUkFHX0VMRU1FTlQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBEUkFHX0FVVE87Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVXNlck1vZGlmeSBlKQorICAgIDogbV90eXBlKENTU19J
REVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBSRUFEX09OTFk6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SRUFEX09OTFk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBSRUFEX1dSSVRFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfUkVBRF9XUklURTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFJFQURfV1JJVEVfUExBSU5URVhUX09OTFk6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9SRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVVzZXJNb2RpZnkoKSBjb25zdAoreworICAgIHJldHVybiBFVXNlck1vZGlmeShtX3ZhbHVlLmlk
ZW50IC0gQ1NTX1ZBTF9SRUFEX09OTFkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVVzZXJTZWxlY3QgZSkKKyAgICA6IG1fdHlw
ZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgU0VMRUNUX05P
TkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0VMRUNUX1RFWFQ6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9URVhUOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVVzZXJTZWxlY3Qo
KSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENT
U19WQUxfQVVUTzoKKyAgICAgICAgICAgIHJldHVybiBTRUxFQ1RfVEVYVDsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICByZXR1cm4gU0VMRUNUX05PTkU7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9URVhUOgorICAgICAgICAgICAgcmV0dXJuIFNFTEVDVF9URVhUOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU0VMRUNUX1RFWFQ7Cit9
CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFVmlzaWJpbGl0eSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2gg
KGUpIHsKKyAgICAgICAgY2FzZSBWSVNJQkxFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfVklTSUJMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhJRERF
TjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hJRERFTjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTExBUFNFOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfQ09MTEFQU0U7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVmlzaWJpbGl0
eSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9ISURERU46CisgICAgICAgICAgICByZXR1cm4gSElEREVOOworICAgICAgICBjYXNl
IENTU19WQUxfVklTSUJMRToKKyAgICAgICAgICAgIHJldHVybiBWSVNJQkxFOworICAgICAgICBj
YXNlIENTU19WQUxfQ09MTEFQU0U6CisgICAgICAgICAgICByZXR1cm4gQ09MTEFQU0U7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBWSVNJQkxFOworfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVdo
aXRlU3BhY2UgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7
CisgICAgICAgIGNhc2UgTk9STUFMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfTk9STUFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUFJFOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUFJFOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUFJFX1dSQVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9QUkVfV1JBUDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBSRV9MSU5FOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUFJFX0xJTkU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOT1dSQVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9OT1dSQVA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLSFRN
TF9OT1dSQVA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9fV0VCS0lUX05P
V1JBUDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVXaGl0ZVNwYWNlKCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX19XRUJLSVRfTk9X
UkFQOgorICAgICAgICAgICAgcmV0dXJuIEtIVE1MX05PV1JBUDsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX05PV1JBUDoKKyAgICAgICAgICAgIHJldHVybiBOT1dSQVA7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9QUkU6CisgICAgICAgICAgICByZXR1cm4gUFJFOworICAgICAgICBjYXNlIENTU19WQUxf
UFJFX1dSQVA6CisgICAgICAgICAgICByZXR1cm4gUFJFX1dSQVA7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9QUkVfTElORToKKyAgICAgICAgICAgIHJldHVybiBQUkVfTElORTsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX05PUk1BTDoKKyAgICAgICAgICAgIHJldHVybiBOT1JNQUw7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOT1JNQUw7Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFV29yZEJyZWFr
IGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAg
ICBjYXNlIE5vcm1hbFdvcmRCcmVhazoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX05PUk1BTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJyZWFrQWxsV29y
ZEJyZWFrOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQlJFQUtfQUxMOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQnJlYWtXb3JkQnJlYWs6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9CUkVBS19XT1JEOworICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRVdvcmRCcmVhaygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CUkVBS19BTEw6CisgICAgICAgICAgICByZXR1cm4gQnJl
YWtBbGxXb3JkQnJlYWs7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CUkVBS19XT1JEOgorICAgICAg
ICAgICAgcmV0dXJuIEJyZWFrV29yZEJyZWFrOworICAgICAgICBjYXNlIENTU19WQUxfTk9STUFM
OgorICAgICAgICAgICAgcmV0dXJuIE5vcm1hbFdvcmRCcmVhazsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5vcm1hbFdvcmRCcmVhazsKK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVXb3JkV3Jh
cCBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAg
ICAgY2FzZSBOb3JtYWxXb3JkV3JhcDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX05PUk1BTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJyZWFrV29yZFdy
YXA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9CUkVBS19XT1JEOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVdvcmRXcmFwKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFs
dWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0JSRUFLX1dPUkQ6CisgICAgICAgICAg
ICByZXR1cm4gQnJlYWtXb3JkV3JhcDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoKKyAg
ICAgICAgICAgIHJldHVybiBOb3JtYWxXb3JkV3JhcDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIE5vcm1hbFdvcmRXcmFwOworfQorCit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUNhcCBlKQorICAg
IDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBC
dXR0Q2FwOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQlVUVDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJvdW5kQ2FwOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfUk9VTkQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTcXVhcmVDYXA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TUVVBUkU7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQ2FwKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1f
dmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0JVVFQ6CisgICAgICAgICAgICBy
ZXR1cm4gQnV0dENhcDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1JPVU5EOgorICAgICAgICAgICAg
cmV0dXJuIFJvdW5kQ2FwOworICAgICAgICBjYXNlIENTU19WQUxfU1FVQVJFOgorICAgICAgICAg
ICAgcmV0dXJuIFNxdWFyZUNhcDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIEJ1dHRDYXA7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaW5lSm9pbiBlKQorICAgIDogbV90eXBlKENTU19JREVO
VCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBNaXRlckpvaW46CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9NSVRFUjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFJvdW5kSm9pbjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1JPVU5EOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQmV2ZWxKb2luOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkVWRUw7CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBMaW5lSm9pbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9NSVRFUjoKKyAgICAgICAgICAgIHJldHVybiBNaXRlckpv
aW47CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9ST1VORDoKKyAgICAgICAgICAgIHJldHVybiBSb3Vu
ZEpvaW47CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CRVZFTDoKKyAgICAgICAgICAgIHJldHVybiBC
ZXZlbEpvaW47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBN
aXRlckpvaW47Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShUZXh0RGlyZWN0aW9uIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQor
eworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIExUUjoKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0xUUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFJUTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JUTDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFRleHREaXJlY3Rpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1
ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfTFRSOgorICAgICAgICAgICAgcmV0dXJu
IExUUjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1JUTDoKKyAgICAgICAgICAgIHJldHVybiBSVEw7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBMVFI7Cit9CisK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShX
aW5kUnVsZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsK
KyAgICAgICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9OT05aRVJPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUlVMRV9F
VkVOT0REOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRVZFTk9ERDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFdpbmRSdWxlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFs
dWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PTlpFUk86CisgICAgICAgICAgICBy
ZXR1cm4gUlVMRV9OT05aRVJPOworICAgICAgICBjYXNlIENTU19WQUxfRVZFTk9ERDoKKyAgICAg
ICAgICAgIHJldHVybiBSVUxFX0VWRU5PREQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBSVUxFX05PTlpFUk87Cit9CisKKyNpZiBFTkFCTEUoU1ZHKQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUFs
aWdubWVudEJhc2VsaW5lIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRj
aCAoZSkgeworICAgICAgICBjYXNlIEFCX0FVVE86CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9BVVRPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJfQkFT
RUxJTkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9CQVNFTElORTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCX0JFRk9SRV9FREdFOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkVGT1JFX0VER0U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBQl9URVhUX0JFRk9SRV9FREdFOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfVEVYVF9CRUZPUkVfRURHRTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEFCX01JRERMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX01JRERMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCX0NFTlRSQUw6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DRU5UUkFMOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJfQUZURVJfRURHRToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0FGVEVSX0VER0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBQl9URVhUX0FGVEVSX0VER0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9URVhUX0FGVEVSX0VER0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBQl9JREVPR1JBUEhJQzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0lE
RU9HUkFQSElDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJfQUxQSEFCRVRJ
QzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FMUEhBQkVUSUM7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQl9IQU5HSU5HOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfSEFOR0lORzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEFCX01BVEhFTUFUSUNBTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX01BVEhFTUFUSUNBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVBbGlnbm1lbnRCYXNlbGlu
ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9BVVRPOgorICAgICAgICAgICAgcmV0dXJuIEFCX0FVVE87CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9CQVNFTElORToKKyAgICAgICAgICAgIHJldHVybiBBQl9CQVNFTElORTsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX0JFRk9SRV9FREdFOgorICAgICAgICAgICAgcmV0dXJuIEFCX0JFRk9S
RV9FREdFOworICAgICAgICBjYXNlIENTU19WQUxfVEVYVF9CRUZPUkVfRURHRToKKyAgICAgICAg
ICAgIHJldHVybiBBQl9URVhUX0JFRk9SRV9FREdFOworICAgICAgICBjYXNlIENTU19WQUxfTUlE
RExFOgorICAgICAgICAgICAgcmV0dXJuIEFCX01JRERMRTsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0NFTlRSQUw6CisgICAgICAgICAgICByZXR1cm4gQUJfQ0VOVFJBTDsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX0FGVEVSX0VER0U6CisgICAgICAgICAgICByZXR1cm4gQUJfQUZURVJfRURHRTsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX1RFWFRfQUZURVJfRURHRToKKyAgICAgICAgICAgIHJldHVybiBB
Ql9URVhUX0FGVEVSX0VER0U7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9JREVPR1JBUEhJQzoKKyAg
ICAgICAgICAgIHJldHVybiBBQl9JREVPR1JBUEhJQzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FM
UEhBQkVUSUM6CisgICAgICAgICAgICByZXR1cm4gQUJfQUxQSEFCRVRJQzsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX0hBTkdJTkc6CisgICAgICAgICAgICByZXR1cm4gQUJfSEFOR0lORzsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX01BVEhFTUFUSUNBTDoKKyAgICAgICAgICAgIHJldHVybiBBQl9NQVRI
RU1BVElDQUw7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBB
Ql9BVVRPOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoRUNvbG9ySW50ZXJwb2xhdGlvbiBlKQorICAgIDogbV90eXBlKENTU19JREVO
VCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBDSV9BVVRPOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENJX1NSR0I6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9T
UkdCOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0lfTElORUFSUkdCOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTElORUFSUkdCOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUNvbG9ySW50ZXJwb2xhdGlvbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3Zh
bHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TUkdCOgorICAgICAgICAgICAgcmV0
dXJuIENJX1NSR0I7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9MSU5FQVJSR0I6CisgICAgICAgICAg
ICByZXR1cm4gQ0lfTElORUFSUkdCOworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKKyAgICAg
ICAgICAgIHJldHVybiBDSV9BVVRPOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQ0lfQVVUTzsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDb2xvclJlbmRlcmluZyBlKQorICAgIDogbV90eXBl
KENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBDUl9BVVRPOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENSX09QVElNSVpFU1BFRUQ6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9PUFRJTUlaRVNQRUVEOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1JfT1BUSU1JWkVRVUFMSVRZOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfT1BUSU1JWkVRVUFMSVRZOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNvbG9yUmVu
ZGVyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX09QVElNSVpFU1BFRUQ6CisgICAgICAgICAgICByZXR1cm4gQ1JfT1BUSU1J
WkVTUEVFRDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX09QVElNSVpFUVVBTElUWToKKyAgICAgICAg
ICAgIHJldHVybiBDUl9PUFRJTUlaRVFVQUxJVFk7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRP
OgorICAgICAgICAgICAgcmV0dXJuIENSX0FVVE87CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBDUl9BVVRPOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRURvbWluYW50QmFzZWxpbmUgZSkKKyAg
ICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2Ug
REJfQVVUTzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQl9VU0VfU0NSSVBUOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfVVNFX1NDUklQVDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERCX05PX0NIQU5HRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX05PX0NIQU5HRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERCX1JF
U0VUX1NJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SRVNFVF9TSVpF
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREJfQ0VOVFJBTDoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NFTlRSQUw7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEQl9NSURETEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9NSURETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQl9URVhUX0JF
Rk9SRV9FREdFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEVYVF9CRUZP
UkVfRURHRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERCX1RFWFRfQUZURVJf
RURHRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFRfQUZURVJfRURH
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERCX0lERU9HUkFQSElDOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSURFT0dSQVBISUM7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBEQl9BTFBIQUJFVElDOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfQUxQSEFCRVRJQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERCX0hBTkdJTkc6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9I
QU5HSU5HOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREJfTUFUSEVNQVRJQ0FM
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUFUSEVNQVRJQ0FMOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRURvbWluYW50QmFzZWxpbmUoKSBjb25zdAoreworICAgIHN3aXRj
aCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKKyAgICAgICAg
ICAgIHJldHVybiBEQl9BVVRPOworICAgICAgICBjYXNlIENTU19WQUxfVVNFX1NDUklQVDoKKyAg
ICAgICAgICAgIHJldHVybiBEQl9VU0VfU0NSSVBUOworICAgICAgICBjYXNlIENTU19WQUxfTk9f
Q0hBTkdFOgorICAgICAgICAgICAgcmV0dXJuIERCX05PX0NIQU5HRTsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX1JFU0VUX1NJWkU6CisgICAgICAgICAgICByZXR1cm4gREJfUkVTRVRfU0laRTsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX0lERU9HUkFQSElDOgorICAgICAgICAgICAgcmV0dXJuIERCX0lE
RU9HUkFQSElDOworICAgICAgICBjYXNlIENTU19WQUxfQUxQSEFCRVRJQzoKKyAgICAgICAgICAg
IHJldHVybiBEQl9BTFBIQUJFVElDOworICAgICAgICBjYXNlIENTU19WQUxfSEFOR0lORzoKKyAg
ICAgICAgICAgIHJldHVybiBEQl9IQU5HSU5HOworICAgICAgICBjYXNlIENTU19WQUxfTUFUSEVN
QVRJQ0FMOgorICAgICAgICAgICAgcmV0dXJuIERCX01BVEhFTUFUSUNBTDsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX0NFTlRSQUw6CisgICAgICAgICAgICByZXR1cm4gREJfQ0VOVFJBTDsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX01JRERMRToKKyAgICAgICAgICAgIHJldHVybiBEQl9NSURETEU7Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0U6CisgICAgICAgICAgICByZXR1cm4g
REJfVEVYVF9BRlRFUl9FREdFOworICAgICAgICBjYXNlIENTU19WQUxfVEVYVF9CRUZPUkVfRURH
RToKKyAgICAgICAgICAgIHJldHVybiBEQl9URVhUX0JFRk9SRV9FREdFOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gREJfQVVUTzsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVJbWFnZVJlbmRl
cmluZyBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAg
ICAgICAgY2FzZSBJUl9BVVRPOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
QVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElSX09QVElNSVpFU1BFRUQ6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9PUFRJTUlaRVNQRUVEOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSVJfT1BUSU1JWkVRVUFMSVRZOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfT1BUSU1JWkVRVUFMSVRZOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRUltYWdlUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFs
dWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86CisgICAgICAgICAgICByZXR1
cm4gSVJfQVVUTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX09QVElNSVpFU1BFRUQ6CisgICAgICAg
ICAgICByZXR1cm4gSVJfT1BUSU1JWkVTUEVFRDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX09QVElN
SVpFUVVBTElUWToKKyAgICAgICAgICAgIHJldHVybiBJUl9PUFRJTUlaRVFVQUxJVFk7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJUl9BVVRPOworfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVBv
aW50ZXJFdmVudHMgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChl
KSB7CisgICAgICAgIGNhc2UgUEVfTk9ORToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQRV9TVFJPS0U6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TVFJPS0U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQRV9GSUxMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfRklMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBFX1BB
SU5URUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9QQUlOVEVEOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEVfVklTSUJMRToKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX1ZJU0lCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBQRV9WSVNJQkxFX1NUUk9LRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX1ZJU0lCTEVTVFJPS0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
RV9WSVNJQkxFX0ZJTEw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9WSVNJ
QkxFRklMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfUEFJ
TlRFRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1ZJU0lCTEVQQUlOVEVE
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEVfQUxMOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfQUxMOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50
ZXJFdmVudHMoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAg
ICBjYXNlIENTU19WQUxfQUxMOgorICAgICAgICAgICAgcmV0dXJuIFBFX0FMTDsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICByZXR1cm4gUEVfTk9ORTsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX1ZJU0lCTEVQQUlOVEVEOgorICAgICAgICAgICAgcmV0dXJuIFBFX1ZJU0lC
TEVfUEFJTlRFRDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEVGSUxMOgorICAgICAgICAg
ICAgcmV0dXJuIFBFX1ZJU0lCTEVfRklMTDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEVT
VFJPS0U6CisgICAgICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9TVFJPS0U7CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9WSVNJQkxFOgorICAgICAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEU7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9QQUlOVEVEOgorICAgICAgICAgICAgcmV0dXJuIFBFX1BBSU5URUQ7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9GSUxMOgorICAgICAgICAgICAgcmV0dXJuIFBFX0ZJTEw7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TVFJPS0U6CisgICAgICAgICAgICByZXR1cm4gUEVfU1RS
T0tFOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUEVfQUxM
OworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRVNoYXBlUmVuZGVyaW5nIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAg
IHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIElSX0FVVE86CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9BVVRPOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SVJfT1BUSU1JWkVTUEVFRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX09Q
VElNSVpFU1BFRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTUl9DUklTUEVE
R0VTOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ1JJU1BFREdFUzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNSX0dFT01FVFJJQ1BSRUNJU0lPTjoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0dFT01FVFJJQ1BSRUNJU0lPTjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEVTaGFwZVJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAgICAg
ICAgcmV0dXJuIFNSX0FVVE87CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9PUFRJTUlaRVNQRUVEOgor
ICAgICAgICAgICAgcmV0dXJuIFNSX09QVElNSVpFU1BFRUQ7CisgICAgICAgIGNhc2UgQ1NTX1ZB
TF9DUklTUEVER0VTOgorICAgICAgICAgICAgcmV0dXJuIFNSX0NSSVNQRURHRVM7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9HRU9NRVRSSUNQUkVDSVNJT046CisgICAgICAgICAgICByZXR1cm4gU1Jf
R0VPTUVUUklDUFJFQ0lTSU9OOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gU1JfQVVUTzsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVUZXh0QW5jaG9yIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFRBX1NUQVJUOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1RBUlQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUQV9NSURETEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9NSURETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUQV9FTkQ6Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9FTkQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBFVGV4dEFuY2hvcigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TVEFSVDoKKyAgICAgICAgICAgIHJldHVybiBUQV9TVEFS
VDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX01JRERMRToKKyAgICAgICAgICAgIHJldHVybiBUQV9N
SURETEU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9FTkQ6CisgICAgICAgICAgICByZXR1cm4gVEFf
RU5EOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVEFfU1RB
UlQ7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShFVGV4dFJlbmRlcmluZyBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAg
ICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBUUl9BVVRPOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRSX09QVElNSVpFU1BFRUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9P
UFRJTUlaRVNQRUVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFJfT1BUSU1J
WkVMRUdJQklMSVRZOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfT1BUSU1J
WkVMRUdJQklMSVRZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFJfR0VPTUVU
UklDUFJFQ0lTSU9OOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfR0VPTUVU
UklDUFJFQ0lTSU9OOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRSZW5kZXJpbmcoKSBjb25z
dAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxf
QVVUTzoKKyAgICAgICAgICAgIHJldHVybiBUUl9BVVRPOworICAgICAgICBjYXNlIENTU19WQUxf
T1BUSU1JWkVTUEVFRDoKKyAgICAgICAgICAgIHJldHVybiBUUl9PUFRJTUlaRVNQRUVEOworICAg
ICAgICBjYXNlIENTU19WQUxfT1BUSU1JWkVMRUdJQklMSVRZOgorICAgICAgICAgICAgcmV0dXJu
IFRSX09QVElNSVpFTEVHSUJJTElUWTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0dFT01FVFJJQ1BS
RUNJU0lPTjoKKyAgICAgICAgICAgIHJldHVybiBUUl9HRU9NRVRSSUNQUkVDSVNJT047CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBUUl9BVVRPOworfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVdy
aXRpbmdNb2RlIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkg
eworICAgICAgICBjYXNlIFdNX0xSVEI6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9MUl9UQjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdNX0xSOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTFI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXTV9STFRCOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfUkxfVEI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXTV9STDoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JMOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV01fVEJSTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X1RCX1JMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV01fVEI6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UQjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVX
cml0aW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChFV3JpdGluZ01vZGUpKG1fdmFsdWUu
aWRlbnQgLSBDU1NfVkFMX0xSX1RCKTsKK30KKworI2VuZGlmCisKK30KKworI2VuZGlmCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDI2NTcyKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxMyBAQAogI2luY2x1
ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVk
ZSAiQ1NTTWVkaWFSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCi0jaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ291bnRlci5oIgpAQCAtMTIwNSw3ICsx
MjA1LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTUwogCiAgICAg
Ly8gQ2hlY2sgdGhlIHNlbGVjdG9yCiAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2Vs
ZWN0b3Ioc2VsLCBlbGVtZW50LCB0cnVlLCBmYWxzZSk7Ci0gICAgaWYobWF0Y2ggIT0gU2VsZWN0
b3JNYXRjaGVzKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hl
cykgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHBzZXVkb1N0eWxlICE9IFJlbmRlclN0eWxlOjpO
T1BTRVVETyAmJiBwc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMjM2LDEwICsxMjM2LDkgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JN
YXRjaCBDU1NTdHlsZQogICAgICAgICBpZiAocHNldWRvU3R5bGUgIT0gUmVuZGVyU3R5bGU6Ok5P
UFNFVURPICYmIHBzZXVkb1N0eWxlICE9IGR5bmFtaWNQc2V1ZG8pCiAgICAgICAgICAgICByZXR1
cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAKLSAgICBzd2l0Y2gocmVsYXRpb24pIHsKKyAg
ICBzd2l0Y2ggKHJlbGF0aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRh
bnQ6Ci0gICAgICAgICAgICB3aGlsZSh0cnVlKQotICAgICAgICAgICAgeworICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBuID0gZS0+cGFyZW50Tm9kZSgp
OwogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CkBAIC0xMjY4LDEw
ICsxMjY3LDkgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBmYWxzZSwgZmFsc2UpOyAKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgotICAg
ICAgICAgICAgd2hpbGUodHJ1ZSkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbiA9IGUtPnByZXZpb3VzU2libGluZygpOwot
ICAgICAgICAgICAgICAgIHdoaWxlKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
ICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAg
ICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CkBAIC0xMjkz
LDcgKzEyOTEsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAK
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2Vs
LCBFbGVtZW50KiBlLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvcikKIHsKLSAg
ICBpZighZSkKKyAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChz
ZWwtPmhhc1RhZygpKSB7CkBAIC0xMzI3LDcgKzEzMjUsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0cmlidXRlIGlzIG5vdCBzZXQKIAotICAgICAgICBz
d2l0Y2goc2VsLT5tX21hdGNoKSB7CisgICAgICAgIHN3aXRjaCAoc2VsLT5tX21hdGNoKSB7CiAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgogICAgICAgICAgICAgaWYgKChpc1hNTERv
YyAmJiBzZWwtPm1fdmFsdWUgIT0gdmFsdWUpIHx8ICghaXNYTUxEb2MgJiYgIWVxdWFsSWdub3Jp
bmdDYXNlKHNlbC0+bV92YWx1ZSwgdmFsdWUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMzgxLDcgKzEzNzksNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25l
U2VsZWN0b3IoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBpZihz
ZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSAKKyAgICBpZiAoc2VsLT5t
X21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykgCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHNlbC0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgICAgICAvLyBQc2V1ZG8gY2xhc3NlczoK
QEAgLTE2NjEsMTIgKzE2NTksMTIgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdAogICAgICAgICAgICAgZm9yIChDU1NTZWxlY3RvciogcyA9IHJ1bGUtPnNlbGVjdG9y
KCk7IHM7IHMgPSBzLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgYWRkUnVsZShydWxlLCBzKTsK
ICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7CisgICAg
ICAgIGVsc2UgaWYgKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7CiAgICAgICAgICAgICBDU1NJbXBv
cnRSdWxlKiBpbXBvcnQgPSBzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4oaXRlbSk7CiAgICAg
ICAgICAgICBpZiAoIWltcG9ydC0+bWVkaWEoKSB8fCBtZWRpdW0tPmV2YWwoaW1wb3J0LT5tZWRp
YSgpKSkKICAgICAgICAgICAgICAgICBhZGRSdWxlc0Zyb21TaGVldChpbXBvcnQtPnN0eWxlU2hl
ZXQoKSwgbWVkaXVtLCBzdHlsZVNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlm
KGl0ZW0tPmlzTWVkaWFSdWxlKCkpIHsKKyAgICAgICAgZWxzZSBpZiAoaXRlbS0+aXNNZWRpYVJ1
bGUoKSkgewogICAgICAgICAgICAgQ1NTTWVkaWFSdWxlKiByID0gc3RhdGljX2Nhc3Q8Q1NTTWVk
aWFSdWxlKj4oaXRlbSk7CiAgICAgICAgICAgICBDU1NSdWxlTGlzdCogcnVsZXMgPSByLT5jc3NS
dWxlcygpOwogCkBAIC0xNzA1LDExICsxNzAzLDExIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRv
TGVuZ3RoKENTU1ByaW1pdGkKICAgICAgICAgICAgICpvayA9IGZhbHNlOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAg
ICAgICAgaWYodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBl
IDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpCisgICAgICAgIGlmICh0eXBlID4gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RFRykKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgIGVsc2UgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICAgICAgbCA9
IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAg
ICAgIGVsc2UgaWYodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAg
ICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgKiAxMDAu
MCwgUGVyY2VudCk7CiAgICAgICAgIGVsc2UgaWYgKG9rKQogICAgICAgICAgICAgKm9rID0gZmFs
c2U7CkBAIC0xNzI5LDcgKzE3MjcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVj
bGFyYXRpb25zCiAgICAgICAgICAgICAvLyBnaXZlIHNwZWNpYWwgcHJpb3JpdHkgdG8gZm9udC14
eHgsIGNvbG9yIHByb3BlcnRpZXMKICAgICAgICAgICAgIGlmIChpc0ltcG9ydGFudCA9PSBjdXJy
ZW50LmlzSW1wb3J0YW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIGZpcnN0OwotICAgICAg
ICAgICAgICAgIHN3aXRjaChjdXJyZW50LmlkKCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KGN1cnJlbnQuaWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX0xJTkVf
SEVJR0hUOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSBjdXJy
ZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCA9ICFhcHBseUZpcnN0
OyAvLyB3ZSBhcHBseSBsaW5lLWhlaWdodCBsYXRlcgpAQCAtMTc5NCw4ICsxNzkyLDkgQEAgc3Rh
dGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZQogCiB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiB7Ci0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUgKnByaW1pdGl2ZVZhbHVlID0gMDsKLSAgICBpZih2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IDA7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAKICAgICBMZW5n
dGggbDsKICAgICBib29sIGFwcGx5ID0gZmFsc2U7CkBAIC0xODE0LDggKzE4MTMsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgLy8gV2hhdCBmb2xsb3dz
IGlzIGEgbGlzdCB0aGF0IG1hcHMgdGhlIENTUyBwcm9wZXJ0aWVzIGludG8gdGhlaXIgY29ycmVz
cG9uZGluZyBmcm9udC1lbmQKICAgICAvLyBSZW5kZXJTdHlsZSB2YWx1ZXMuICBTaG9ydGhhbmRz
IChlLmcuIGJvcmRlciwgYmFja2dyb3VuZCkgb2NjdXIgaW4gdGhpcyBsaXN0IGFzIHdlbGwgYW5k
CiAgICAgLy8gYXJlIG9ubHkgaGl0IHdoZW4gbWFwcGluZyAiaW5oZXJpdCIgb3IgImluaXRpYWwi
IGludG8gZnJvbnQtZW5kIHZhbHVlcy4KLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3Bl
cnR5SUQ+KGlkKSkKLSAgICB7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
PihpZCkpIHsKIC8vIGlkZW50IG9ubHkgcHJvcGVydGllcwogICAgIGNhc2UgQ1NTX1BST1BfQkFD
S0dST1VORF9BVFRBQ0hNRU5UOgogICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShiYWNr
Z3JvdW5kQXR0YWNobWVudCwgQmFja2dyb3VuZEF0dGFjaG1lbnQsIHZhbHVlKQpAQCAtMTgzNywx
NDIgKzE4MzUsOTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0U6CiAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJvcmRlckNvbGxhcHNlLCBCb3JkZXJDb2xs
YXBzZSkKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIHN3aXRj
aChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgewotICAgICAgICBjYXNlIENT
U19WQUxfQ09MTEFQU0U6Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UodHJ1
ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1NFUEFSQVRFOgot
ICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU19WQUxfQ09MTEFQU0U6CisgICAgICAgICAg
ICAgICAgc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKHRydWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1NFUEFSQVRFOgorICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1RP
UF9TVFlMRToKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShi
b3JkZXJUb3BTdHlsZSwgQm9yZGVyVG9wU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIHN0eWxlLT5zZXRCb3JkZXJUb3BTdHls
ZSgoRUJvcmRlclN0eWxlKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfTk9O
RSkpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0
Qm9yZGVyVG9wU3R5bGUoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgQ1NTX1BST1BfQk9SREVSX1JJR0hUX1NUWUxFOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9XSVRIX1ZBTFVFKGJvcmRlclJpZ2h0U3R5bGUsIEJvcmRlclJpZ2h0U3R5bGUs
IEJvcmRlclN0eWxlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAg
ICAgIHN0eWxlLT5zZXRCb3JkZXJSaWdodFN0eWxlKChFQm9yZGVyU3R5bGUpKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9OT05FKSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJSaWdodFN0eWxlKCpwcmltaXRpdmVW
YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9CT1RUT01f
U1RZTEU6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUoYm9y
ZGVyQm90dG9tU3R5bGUsIEJvcmRlckJvdHRvbVN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQm90
dG9tU3R5bGUoKEVCb3JkZXJTdHlsZSkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1Nf
VkFMX05PTkUpKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgc3R5
bGUtPnNldEJvcmRlckJvdHRvbVN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9MRUZUX1NUWUxFOgogICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKGJvcmRlckxlZnRTdHlsZSwgQm9yZGVyTGVm
dFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJu
OwotICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyTGVmdFN0eWxlKChFQm9yZGVyU3R5bGUpKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9OT05FKSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUoKnByaW1p
dGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9T
VFlMRToKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShvdXRs
aW5lU3R5bGUsIE91dGxpbmVTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU19WQUxfQVVUTykKLSAgICAgICAgICAgIHN0eWxlLT5zZXRPdXRsaW5lU3R5bGUoRE9U
VEVELCB0cnVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUtPnNldE91dGxpbmVT
dHlsZSgoRUJvcmRlclN0eWxlKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxf
Tk9ORSkpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX0FVVE8pCisgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RURUQsIHRydWUpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRPdXRsaW5lU3R5bGUoKnByaW1pdGl2ZVZhbHVl
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJPUF9DQVBUSU9O
X1NJREU6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChjYXB0aW9u
U2lkZSwgQ2FwdGlvblNpZGUpCi0gICAgICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwot
ICAgICAgICBFQ2FwdGlvblNpZGUgYyA9IFJlbmRlclN0eWxlOjppbml0aWFsQ2FwdGlvblNpZGUo
KTsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7
Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgYyA9IENBUExFRlQ7IGJy
ZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfUklHSFQ6Ci0gICAgICAgICAgICBjID0gQ0FQUklH
SFQ7IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfVE9QOgotICAgICAgICAgICAgYyA9IENB
UFRPUDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9CT1RUT006Ci0gICAgICAgICAgICBj
ID0gQ0FQQk9UVE9NOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0Q2FwdGlvblNpZGUoYyk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDYXB0aW9uU2lkZSgq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BS
T1BfQ0xFQVI6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChjbGVh
ciwgQ2xlYXIpCi0gICAgICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBF
Q2xlYXIgYzsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAg
ICAgICB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgotICAgICAgICAgICAgYyA9IENOT05F
OyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0xFRlQ6Ci0gICAgICAgICAgICBjID0gQ0xF
RlQ7IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfUklHSFQ6Ci0gICAgICAgICAgICBjID0g
Q1JJR0hUOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0JPVEg6Ci0gICAgICAgICAgICBj
ID0gQ0JPVEg7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXRDbGVhcihjKTsKKyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlKQorICAgICAgICAgICAgc3R5bGUtPnNldENsZWFyKCpwcmltaXRpdmVWYWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9ESVJFQ1RJT046CiAg
ICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChkaXJlY3Rpb24sIERpcmVj
dGlvbikKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVlKSBicmVhazsKLSAgICAgICAgc3R5bGUt
PnNldERpcmVjdGlvbihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX0xUUiA/
IExUUiA6IFJUTCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0
eWxlLT5zZXREaXJlY3Rpb24oKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIENTU19QUk9QX0RJU1BMQVk6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChkaXNwbGF5LCBEaXNwbGF5KQotICAgICAgICBpZighcHJpbWl0aXZl
VmFsdWUpIGJyZWFrOwotICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KTsKLSAgICAgICAgRURpc3BsYXkgZDsKLSAgICAgICAgaWYgKGlkID09IENTU19WQUxfTk9ORSkK
LSAgICAgICAgICAgIGQgPSBOT05FOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gRURp
c3BsYXkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0lOTElORSk7Ci0KLSAg
ICAgICAgc3R5bGUtPnNldERpc3BsYXkoZCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkK
KyAgICAgICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX0VNUFRZX0NFTExTOgogICAgIHsK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZW1wdHlDZWxscywgRW1wdHlDZWxs
cykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgYnJlYWs7Ci0gICAgICAgIGludCBpZCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTX1ZBTF9T
SE9XKQotICAgICAgICAgICAgc3R5bGUtPnNldEVtcHR5Q2VsbHMoU0hPVyk7Ci0gICAgICAgIGVs
c2UgaWYgKGlkID09IENTU19WQUxfSElERSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRFbXB0eUNl
bGxzKEhJREUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHls
ZS0+c2V0RW1wdHlDZWxscygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgQ1NTX1BST1BfRkxPQVQ6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChmbG9hdGluZywgRmxvYXRpbmcpCi0gICAgICAgIGlmKCFwcmltaXRpdmVW
YWx1ZSkgcmV0dXJuOwotICAgICAgICBFRmxvYXQgZjsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZU
OgotICAgICAgICAgICAgZiA9IEZMRUZUOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JJ
R0hUOgotICAgICAgICAgICAgZiA9IEZSSUdIVDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZB
TF9OT05FOgotICAgICAgICBjYXNlIENTU19WQUxfQ0VOVEVSOiAgLy9Ob24gc3RhbmRhcnQgQ1NT
LVZhbHVlCi0gICAgICAgICAgICBmID0gRk5PTkU7IGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdHlsZS0+
c2V0RmxvYXRpbmcoZik7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAg
IHN0eWxlLT5zZXRGbG9hdGluZygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xOTg0LDcgKzE5MzAsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
UHJvcGVydHkoaW50CiAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZB
TF9PQkxJUVVFOgogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1l
IGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgpAQCAtMjAxMSw3ICsxOTU4LDggQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBlbHNlIGlmIChpc0lu
aXRpYWwpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47
CisgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwogICAg
ICAgICAgICAgaWYgKGlkID09IENTU19WQUxfTk9STUFMKQogICAgICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOwpAQCAtMjAzMyw3ICsxOTgxLDggQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBlbHNlIGlmIChp
c0luaXRpYWwpCiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGNOb3JtYWxX
ZWlnaHQpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
IHJldHVybjsKKyAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgYXJlbid0IGdlbnVpbmVseSBzdXBwb3J0
aW5nIHNwZWNpZmljIHdlaWdodCB2YWx1ZXMuCkBAIC0yMDcxLDI3ICsyMDIwLDE2IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU19QUk9QX0xJ
U1RfU1RZTEVfUE9TSVRJT046CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChsaXN0U3R5bGVQb3NpdGlvbiwgTGlzdFN0eWxlUG9zaXRpb24pCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKQotICAgICAgICAgICAgc3R5bGUtPnNldExpc3RTdHlsZVBvc2l0aW9uKChFTGlzdFN0
eWxlUG9zaXRpb24pIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfT1VUU0lE
RSkpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0
TGlzdFN0eWxlUG9zaXRpb24oKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGNhc2UgQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFOgogICAgIHsKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGlzdFN0eWxlVHlwZSwgTGlzdFN0eWxlVHlwZSkK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVMaXN0U3R5bGVU
eXBlIHQ7Ci0gICAgICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsK
LSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PTkUpIHsgLy8gaW1wb3J0YW50ISEKLSAg
ICAgICAgICAgICAgdCA9IExOT05FOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgdCA9IEVMaXN0U3R5bGVUeXBlKGlkIC0gQ1NTX1ZBTF9ESVNDKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHN0eWxlLT5zZXRMaXN0U3R5bGVUeXBlKHQpOwotICAgICAgICB9CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRMaXN0U3R5bGVU
eXBlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIxMDks
MjMgKzIwNDcsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBFT3Zl
cmZsb3cgbzsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAgICAgICBvID0gT1ZJ
U0lCTEU7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0hJRERFTjoKLSAgICAgICAg
ICAgICAgICBvID0gT0hJRERFTjsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfU0NS
T0xMOgotICAgICAgICAgICAgICAgIG8gPSBPU0NST0xMOyBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1NTX1ZBTF9BVVRPOgotICAgICAgICAgICAgICAgIG8gPSBPQVVUTzsgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIENTU19WQUxfX1dFQktJVF9NQVJRVUVFOgotICAgICAgICAgICAgICAgIG8g
PSBPTUFSUVVFRTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfT1ZFUkxBWToKLSAg
ICAgICAgICAgICAgICBvID0gT09WRVJMQVk7IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgRU92ZXJmbG93IG8g
PSAqcHJpbWl0aXZlVmFsdWU7CisKICAgICAgICAgc3R5bGUtPnNldE92ZXJmbG93WChvKTsKICAg
ICAgICAgc3R5bGUtPnNldE92ZXJmbG93WShvKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzNCwy
MjggKzIwNTcsODIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAog
ICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWDoKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKG92ZXJmbG93WCwgT3ZlcmZsb3dYKQotICAgICAgICBFT3ZlcmZsb3cg
bzsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7
Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9WSVNJQkxFOgotICAgICAgICAgICAgbyA9IE9WSVNJQkxF
OyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0hJRERFTjoKLSAgICAgICAgICAgIG8gPSBP
SElEREVOOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1NDUk9MTDoKLSAgICAgICAgICAg
IG8gPSBPU0NST0xMOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAg
ICAgICBvID0gT0FVVE87IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfX1dFQktJVF9NQVJR
VUVFOgotICAgICAgICAgICAgbyA9IE9NQVJRVUVFOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1Nf
VkFMX09WRVJMQVk6Ci0gICAgICAgICAgICBvID0gT09WRVJMQVk7IGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5z
ZXRPdmVyZmxvd1gobyk7CisgICAgICAgIHN0eWxlLT5zZXRPdmVyZmxvd1goKnByaW1pdGl2ZVZh
bHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQ1NTX1BST1BfT1ZFUkZM
T1dfWToKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG92ZXJmbG93
WSwgT3ZlcmZsb3dZKQotICAgICAgICBFT3ZlcmZsb3cgbzsKLSAgICAgICAgc3dpdGNoKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9W
SVNJQkxFOgotICAgICAgICAgICAgbyA9IE9WSVNJQkxFOyBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NfVkFMX0hJRERFTjoKLSAgICAgICAgICAgIG8gPSBPSElEREVOOyBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX1NDUk9MTDoKLSAgICAgICAgICAgIG8gPSBPU0NST0xMOyBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICBvID0gT0FVVE87IGJyZWFrOwot
ICAgICAgICBjYXNlIENTU19WQUxfX1dFQktJVF9NQVJRVUVFOgotICAgICAgICAgICAgbyA9IE9N
QVJRVUVFOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX09WRVJMQVk6Ci0gICAgICAgICAg
ICBvID0gT09WRVJMQVk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXRPdmVyZmxvd1kobyk7CisgICAgICAg
IHN0eWxlLT5zZXRPdmVyZmxvd1koKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19CRUZPUkU6CiAgICAgewogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKHBhZ2VCcmVha0JlZm9y
ZSwgUGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgc3R5bGUt
PnNldFBhZ2VCcmVha0JlZm9yZShQQkFVVE8pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NfVkFMX0xFRlQ6Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfUklH
SFQ6Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQUxXQVlTOgotICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRQYWdlQnJlYWtCZWZvcmUoUEJBTFdBWVMpOyAvLyBDU1MyLjE6ICJDb25mb3JtaW5n
IHVzZXIgYWdlbnRzIG1heSBtYXAgbGVmdC9yaWdodCB0byBhbHdheXMuIgotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FWT0lEOgotICAgICAgICAgICAg
ICAgIHN0eWxlLT5zZXRQYWdlQnJlYWtCZWZvcmUoUEJBVk9JRCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGUtPnNldFBhZ2VCcmVha0JlZm9yZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFLX0FGVEVSOgogICAg
IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwYWdlQnJl
YWtBZnRlciwgUGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0UGFnZUJyZWFrQWZ0ZXIoUEJBVVRPKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFM
X1JJR0hUOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FMV0FZUzoKLSAgICAgICAgICAgICAg
ICBzdHlsZS0+c2V0UGFnZUJyZWFrQWZ0ZXIoUEJBTFdBWVMpOyAvLyBDU1MyLjE6ICJDb25mb3Jt
aW5nIHVzZXIgYWdlbnRzIG1heSBtYXAgbGVmdC9yaWdodCB0byBhbHdheXMuIgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FWT0lEOgotICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRQYWdlQnJlYWtBZnRlcihQQkFWT0lEKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAg
ICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrQWZ0ZXIoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19JTlNJREU6IHsK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwYWdlQnJlYWtJ
bnNpZGUsIFBhZ2VCcmVha0luc2lkZSwgUGFnZUJyZWFrKQotICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NfVkFMX0FVVE8pCi0gICAgICAgICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrSW5zaWRlKFBC
QVVUTyk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U19WQUxfQVZPSUQpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrSW5zaWRlKFBCQVZP
SUQpOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAg
aWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQYWdlQnJl
YWtJbnNpZGUocGFnZUJyZWFrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBDU1NfUFJPUF9QT1NJVElPTjoKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKHBvc2l0aW9uLCBQb3NpdGlvbikKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZh
bHVlKSByZXR1cm47Ci0gICAgICAgIEVQb3NpdGlvbiBwOwotICAgICAgICBzd2l0Y2gocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgIHsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1NU
QVRJQzoKLSAgICAgICAgICAgIHAgPSBTdGF0aWNQb3NpdGlvbjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU19WQUxfUkVMQVRJVkU6Ci0gICAgICAgICAgICBwID0gUmVsYXRp
dmVQb3NpdGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfQUJT
T0xVVEU6Ci0gICAgICAgICAgICBwID0gQWJzb2x1dGVQb3NpdGlvbjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfRklYRUQ6Ci0gICAgICAgICAgICBwID0gRml4ZWRQ
b3NpdGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXRQb3NpdGlvbihwKTsKKyAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgc3R5bGUtPnNldFBvc2l0aW9u
KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENT
U19QUk9QX1RBQkxFX0xBWU9VVDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TCh0YWJsZUxheW91dCwgVGFibGVMYXlvdXQpCiAKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRVRhYmxlTGF5b3V0
IGwgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChsID09IFRBVVRPKQorICAgICAgICAg
ICAgbCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGFibGVMYXlvdXQoKTsKIAotICAgICAgICBFVGFi
bGVMYXlvdXQgbCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGFibGVMYXlvdXQoKTsKLSAgICAgICAg
c3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENT
U19WQUxfRklYRUQ6Ci0gICAgICAgICAgICAgICAgbCA9IFRGSVhFRDsKLSAgICAgICAgICAgICAg
ICAvLyBmYWxsIHRocm91Z2gKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgotICAgICAg
ICAgICAgICAgIHN0eWxlLT5zZXRUYWJsZUxheW91dChsKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgc3R5bGUtPnNldFRh
YmxlTGF5b3V0KGwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IENTU19QUk9QX1VOSUNPREVfQklESTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTCh1bmljb2RlQmlkaSwgVW5pY29kZUJpZGkpCi0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6Ci0g
ICAgICAgICAgICAgICAgc3R5bGUtPnNldFVuaWNvZGVCaWRpKFVCTm9ybWFsKTsgCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRU1CRUQ6Ci0gICAgICAg
ICAgICAgICAgc3R5bGUtPnNldFVuaWNvZGVCaWRpKEVtYmVkKTsgCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQklESV9PVkVSUklERToKLSAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0VW5pY29kZUJpZGkoT3ZlcnJpZGUpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgc3R5bGUtPnNldFVuaWNvZGVCaWRpKCpwcmltaXRpdmVWYWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9URVhUX1RSQU5TRk9S
TTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0VHJhbnNmb3JtLCBU
ZXh0VHJhbnNmb3JtKQotICAgICAgICAKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSByZXR1cm47Ci0KLSAgICAgICAgRVRleHRUcmFuc2Zvcm0gdHQ7Ci0gICAgICAgIHN3
aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxf
Q0FQSVRBTElaRTogIHR0ID0gQ0FQSVRBTElaRTsgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19W
QUxfVVBQRVJDQVNFOiAgIHR0ID0gVVBQRVJDQVNFOyAgIGJyZWFrOwotICAgICAgICBjYXNlIENT
U19WQUxfTE9XRVJDQVNFOiAgIHR0ID0gTE9XRVJDQVNFOyAgIGJyZWFrOwotICAgICAgICBjYXNl
IENTU19WQUxfTk9ORToKLSAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICB0dCA9IFRU
Tk9ORTsgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0VGV4dFRyYW5z
Zm9ybSh0dCk7CisgICAgICAgIHN0eWxlLT5zZXRUZXh0VHJhbnNmb3JtKCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIH0KIAogICAgIGNhc2UgQ1NTX1BS
T1BfVklTSUJJTElUWToKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KHZpc2liaWxpdHksIFZpc2liaWxpdHkpCi0KLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9ISURERU46Ci0gICAgICAgICAg
ICBzdHlsZS0+c2V0VmlzaWJpbGl0eShISURERU4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9WSVNJQkxFOgotICAgICAgICAgICAgc3R5bGUtPnNldFZpc2liaWxp
dHkoVklTSUJMRSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0NP
TExBUFNFOgotICAgICAgICAgICAgc3R5bGUtPnNldFZpc2liaWxpdHkoQ09MTEFQU0UpOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgc3R5
bGUtPnNldFZpc2liaWxpdHkoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIENTU19QUk9QX1dISVRFX1NQQUNFOgogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh3aGl0ZVNwYWNlLCBXaGl0ZVNwYWNlKQotCi0gICAgICAgIGlmKCFwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0dXJuOwotCi0gICAgICAgIEVXaGl0ZVNwYWNlIHM7
Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBj
YXNlIENTU19WQUxfX1dFQktJVF9OT1dSQVA6Ci0gICAgICAgICAgICBzID0gS0hUTUxfTk9XUkFQ
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1dSQVA6Ci0gICAg
ICAgICAgICBzID0gTk9XUkFQOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
X1ZBTF9QUkU6Ci0gICAgICAgICAgICBzID0gUFJFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9QUkVfV1JBUDoKLSAgICAgICAgICAgIHMgPSBQUkVfV1JBUDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfUFJFX0xJTkU6Ci0gICAgICAg
ICAgICBzID0gUFJFX0xJTkU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1Nf
VkFMX05PUk1BTDoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHMgPSBOT1JNQUw7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0V2hpdGVTcGFj
ZShzKTsKKyAgICAgICAgc3R5bGUtPnNldFdoaXRlU3BhY2UoKnByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9OOgpA
QCAtMjM4MywxNCArMjE2MCwxNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkoaW50CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1JERVJfSE9SSVpPTlRB
TF9TUEFDSU5HOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGhvcml6b250
YWxCb3JkZXJTcGFjaW5nLCBIb3Jpem9udGFsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkgcmV0dXJuOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBzaG9ydCBzcGFjaW5nID0gIHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUpOwogICAgICAgICBzdHlsZS0+c2V0SG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoc3BhY2luZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBDU1NfUFJPUF9fV0VCS0lUX0JPUkRFUl9WRVJUSUNBTF9TUEFDSU5HOiB7CiAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZlcnRpY2FsQm9yZGVyU3BhY2luZywgVmVydGljYWxC
b3JkZXJTcGFjaW5nKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHNo
b3J0IHNwYWNpbmcgPSAgcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzdHlsZSk7
CiAgICAgICAgIHN0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI0MjYsMjcgKzIyMDUsMTMgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4ocHJpbWl0
aXZlVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmFkZEN1cnNvcihpbWFn
ZS0+aW1hZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCkpLCBpbWFnZS0+aG90c3Bv
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGludCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoaWRlbnQgPT0gQ1NTX1ZBTF9DT1BZKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQ09QWSk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGlkZW50ID09IENTU19WQUxfTk9ORSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRDdXJzb3IoQ1VSU09SX05PTkUpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShpZGVudCAt
IENTU19WQUxfQVVUTykpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAg
ICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBpbnQg
dHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7Ci0gICAgICAgICAgICAgICAg
aW50IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGlkZW50ID09IENTU19WQUxfQ09QWSkKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNl
dEN1cnNvcihDVVJTT1JfQ09QWSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaWRlbnQgPT0g
Q1NTX1ZBTF9OT05FKQotICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNP
Ul9OT05FKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRDdXJzb3IoKEVDdXJzb3IpKGlkZW50IC0gQ1NTX1ZBTF9BVVRPKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5U
KQorICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAvLyBjb2xvcnMgfHwgaW5oZXJpdApAQCAtMjQ4Niw3
ICsyMjUxLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAg
ICAgICAgICAgY29sID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoKGlkKSB7CisgICAgICAgIHN3aXRjaCAoaWQp
IHsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX0NPTE9SOgogICAgICAgICAgICAg
c3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihjb2wpOyBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9CT1JERVJfVE9QX0NPTE9SOgpAQCAtMjU1NSwxMCArMjMyMCwxMCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZighcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc2hvcnQgd2lk
dGggPSAzOwotICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAg
ICAgIHsKKyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAg
ICAgICBjYXNlIENTU19WQUxfVEhJTjoKICAgICAgICAgICAgIHdpZHRoID0gMTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjU3NSw5ICsyMzQwLDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
cHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYod2lkdGggPCAwKSByZXR1cm47Ci0gICAgICAgIHN3aXRjaChpZCkKLSAgICAgICAgewor
ICAgICAgICBpZiAod2lkdGggPCAwKSByZXR1cm47CisgICAgICAgIHN3aXRjaCAoaWQpIHsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfVE9QX1dJRFRIOgogICAgICAgICAgICAgc3R5bGUt
PnNldEJvcmRlclRvcFdpZHRoKHdpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYyMSwx
MSArMjM4NSwxMSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NfVkFMX05PUk1BTCl7CiAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZighcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgc3dpdGNoKGlkKQotICAgICAgICB7CisgICAgICAgIHN3aXRjaCAoaWQp
IHsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9MRVRURVJfU1BBQ0lORzoKICAgICAgICAgICAgIHN0
eWxlLT5zZXRMZXR0ZXJTcGFjaW5nKHdpZHRoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY0
MCw5OSArMjQwNCwzNCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50
CiAKICAgICBjYXNlIENTU19QUk9QX1dPUkRfQlJFQUs6IHsKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwod29yZEJyZWFrLCBXb3JkQnJlYWspCi0KLSAgICAgICAgRVdvcmRCcmVh
ayBiOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9CUkVBS19BTEw6Ci0gICAgICAgICAgICBiID0gQnJlYWtBbGxXb3Jk
QnJlYWs7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0JSRUFLX1dP
UkQ6Ci0gICAgICAgICAgICBiID0gQnJlYWtXb3JkQnJlYWs7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGIgPSBOb3JtYWxXb3JkQnJlYWs7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBzdHlsZS0+c2V0V29yZEJyZWFrKGIpOworICAgICAgICBzdHlsZS0+c2V0V29yZEJy
ZWFrKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNl
IENTU19QUk9QX1dPUkRfV1JBUDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TCh3b3JkV3JhcCwgV29yZFdyYXApCi0KLSAgICAgICAgRVdvcmRXcmFwIHM7Ci0gICAgICAgIHN3
aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxf
QlJFQUtfV09SRDoKLSAgICAgICAgICAgIHMgPSBCcmVha1dvcmRXcmFwOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBzID0gTm9ybWFsV29yZFdyYXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0eWxlLT5zZXRXb3JkV3JhcChzKTsKKyAgICAgICAgc3R5bGUtPnNl
dFdvcmRXcmFwKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjYXNlIENTU19QUk9QX19XRUJLSVRfTkJTUF9NT0RFOgogICAgIHsKICAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwobmJzcE1vZGUsIE5CU1BNb2RlKQotCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLQotICAgICAgICBFTkJTUE1vZGUg
bTsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAg
IGNhc2UgQ1NTX1ZBTF9TUEFDRToKLSAgICAgICAgICAgIG0gPSBTUEFDRTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgbSA9IE5CTk9STUFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgc3R5bGUtPnNldE5CU1BNb2RlKG0pOworICAgICAgICBzdHlsZS0+c2V0TkJTUE1v
ZGUoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9MSU5FX0JSRUFLOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwoa2h0bWxMaW5lQnJlYWssIEtIVE1MTGluZUJyZWFrKQotCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLQotICAgICAgICBFS0hU
TUxMaW5lQnJlYWsgYjsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9BRlRFUl9XSElURV9TUEFDRToKLSAgICAgICAgICAg
IGIgPSBBRlRFUl9XSElURV9TUEFDRTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENTU19WQUxfTk9STUFMOgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYiA9IExCTk9S
TUFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUtPnNldEtI
VE1MTGluZUJyZWFrKGIpOworICAgICAgICBzdHlsZS0+c2V0S0hUTUxMaW5lQnJlYWsoKnByaW1p
dGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9NQVRDSF9ORUFSRVNUX01BSUxfQkxPQ0tRVU9URV9DT0xPUjoKICAgICB7CiAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3Rl
Q29sb3IsIE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCi0KLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0dXJuOwotCi0gICAgICAgIEVNYXRjaE5lYXJl
c3RNYWlsQmxvY2txdW90ZUNvbG9yIGM7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgotICAgICAgICAgICAg
YyA9IEJDTk9STUFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9N
QVRDSDoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGMgPSBNQVRDSDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yKGMpOworICAgICAgICBzdHlsZS0+c2V0TWF0Y2hOZWFyZXN0TWFpbEJs
b2NrcXVvdGVDb2xvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yNzQwLDI4ICsyNDM5LDE2IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHJlc2l6
ZSwgUmVzaXplKQogCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJl
dHVybjsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBFUmVzaXplIHIgPSBSRVNJWkVfTk9ORTsKLSAgICAgICAg
c3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTX1ZB
TF9CT1RIOgotICAgICAgICAgICAgciA9IFJFU0laRV9CT1RIOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9IT1JJWk9OVEFMOgotICAgICAgICAgICAgciA9IFJFU0la
RV9IT1JJWk9OVEFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9W
RVJUSUNBTDoKLSAgICAgICAgICAgIHIgPSBSRVNJWkVfVkVSVElDQUw7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86CisgICAgICAgIEVSZXNpemUgcjsKKyAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfQVVUTykgewog
ICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdz
KCkpCiAgICAgICAgICAgICAgICAgciA9IHNldHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUo
KSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NfVkFMX05PTkU6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByID0g
UkVTSVpFX05PTkU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHIgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgICAgICAKICAgICAg
ICAgc3R5bGUtPnNldFJlc2l6ZShyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3Njks
NyArMjQ1Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAg
ICAvLyBsZW5ndGgsIHBlcmNlbnQKICAgICBjYXNlIENTU19QUk9QX01BWF9XSURUSDoKICAgICAg
ICAgLy8gK25vbmUgK2luaGVyaXQKLSAgICAgICAgaWYocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9OT05FKQorICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9OT05FKQog
ICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwogICAgIGNhc2UgQ1NTX1BST1BfVE9QOgogICAgIGNh
c2UgQ1NTX1BST1BfTEVGVDoKQEAgLTI4NDIsMTEgKzI1MjksMTEgQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KGludAogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAm
JiAhYXBwbHkpIHsKICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQorICAgICAg
ICAgICAgaWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlw
ZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQogICAgICAgICAgICAgICAgIC8vIEhhbmRs
ZSBvdXIgcXVpcmt5IG1hcmdpbiB1bml0cyBpZiB3ZSBoYXZlIHRoZW0uCiAgICAgICAgICAgICAg
ICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChz
dHlsZSksIEZpeGVkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVl
LT5pc1F1aXJrVmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgICAgICAgICAgbCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg1Nyw5ICsyNTQ0LDggQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBpZigh
YXBwbHkpIHJldHVybjsKLSAgICAgICAgc3dpdGNoKGlkKQotICAgICAgICAgICAgeworICAgICAg
ICBpZiAoIWFwcGx5KSByZXR1cm47CisgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgICAg
IGNhc2UgQ1NTX1BST1BfTUFYX1dJRFRIOgogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXhX
aWR0aChsKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU19QUk9QX0JPVFRPTToKQEAgLTI5
NTEsMTIgKzI2MzcsMTIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dAogCiAgICAgY2FzZSBDU1NfUFJPUF9WRVJUSUNBTF9BTElHTjoKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwodmVydGljYWxBbGlnbiwgVmVydGljYWxBbGlnbikKLSAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKICAgICAgICAgICBFVmVydGljYWxBbGlnbiBhbGlnbjsKIAotICAgICAgICAgIHN3
aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHsKKyAgICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX1RPUDoKICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBUT1A7IGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9CT1RUT006CkBAIC0yOTgzLDkgKzI2Njks
OSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlw
ZSgpOwogICAgICAgICAgIExlbmd0aCBsOwotICAgICAgICAgIGlmKHR5cGUgPiBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
REVHKQorICAgICAgICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKICAgICAgICAgICAgIGwg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUp
LCBGaXhlZCk7Ci0gICAgICAgICAgZWxzZSBpZih0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogCiAgICAgICAgICAgc3R5bGUtPnNldFZl
cnRpY2FsQWxpZ24oTEVOR1RIKTsKQEAgLTMwNDksNyArMjczNSw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUykpOwog
ICAgICAgICAgICAgaWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Ug
JiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQogICAgICAgICAgICAgICAgIHNp
emUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHBhcmVudFN0eWxlLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1
ZS0+Z2V0RmxvYXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAxMDAuMGY7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzEwNCw3ICsyNzkwLDggQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTX1BST1BfTElORV9I
RUlHSFQ6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaW5lSGVp
Z2h0LCBMaW5lSGVpZ2h0KQotICAgICAgICBpZighcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
TGVuZ3RoIGxpbmVIZWlnaHQ7CiAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU19WQUxfTk9STUFMKQpAQCAtMzEzNSwxMSArMjgyMiwxMSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlu
dCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwogICAgICAgICBpZiAoaWQgPT0gQ1NT
X1ZBTF9TVEFSVCkKLSAgICAgICAgICAgIGlkID0gc3R5bGUtPmRpcmVjdGlvbigpID09IExUUiA/
IENTU19WQUxfTEVGVCA6IENTU19WQUxfUklHSFQ7CisgICAgICAgICAgICBzdHlsZS0+c2V0VGV4
dEFsaWduKHN0eWxlLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMRUZUIDogUklHSFQpOwogICAgICAg
ICBlbHNlIGlmIChpZCA9PSBDU1NfVkFMX0VORCkKLSAgICAgICAgICAgIGlkID0gc3R5bGUtPmRp
cmVjdGlvbigpID09IExUUiA/IENTU19WQUxfUklHSFQgOiBDU1NfVkFMX0xFRlQ7Ci0gICAgICAg
IAotICAgICAgICBzdHlsZS0+c2V0VGV4dEFsaWduKChFVGV4dEFsaWduKSAoaWQgLSBDU1NfVkFM
X19XRUJLSVRfQVVUTykpOworICAgICAgICAgICAgc3R5bGUtPnNldFRleHRBbGlnbihzdHlsZS0+
ZGlyZWN0aW9uKCkgPT0gTFRSID8gUklHSFQgOiBMRUZUKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc3R5bGUtPnNldFRleHRBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zMjkyLDkgKzI5NzksOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIGJvb2wgb2xkRmFtaWx5SXNNb25vc3BhY2UgPSBm
b250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlwdGlvbjo6TW9ub3Nw
YWNlRmFtaWx5OwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250
RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKIAotICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbGVu
OyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAg
ICAgICAgQ1NTVmFsdWUgKml0ZW0gPSBsaXN0LT5pdGVtKGkpOwotICAgICAgICAgICAgaWYoIWl0
ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWl0ZW0t
PmlzUHJpbWl0aXZlVmFsdWUoKSkgY29udGludWU7CiAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSAqdmFsID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKICAgICAg
ICAgICAgIEF0b21pY1N0cmluZyBmYWNlOwogICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKQEAgLTMzNTQsMTkgKzMwNDEsMTggQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAvLyBsaXN0IG9mIGlk
ZW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHREZWNvcmF0aW9uLCBU
ZXh0RGVjb3JhdGlvbikKICAgICAgICAgaW50IHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRE
ZWNvcmF0aW9uKCk7Ci0gICAgICAgIGlmKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU19WQUxfTk9ORSkgeworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9OT05FKSB7CiAgICAg
ICAgICAgICAvLyBkbyBub3RoaW5nCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZigh
dmFsdWUtPmlzVmFsdWVMaXN0KCkpIHJldHVybjsKKyAgICAgICAgICAgIGlmICghdmFsdWUtPmlz
VmFsdWVMaXN0KCkpIHJldHVybjsKICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCAqbGlzdCA9IHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKICAgICAgICAgICAgIGludCBsZW4gPSBs
aXN0LT5sZW5ndGgoKTsKLSAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykK
KyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgQ1NTVmFsdWUgKml0ZW0gPSBsaXN0LT5pdGVtKGkpOwotICAgICAg
ICAgICAgICAgIGlmKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKSBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKQotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9O
T05FOgogICAgICAgICAgICAgICAgICAgICAgICAgdCA9IFRETk9ORTsgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9VTkRFUkxJTkU6CkBAIC0zNTcyLDE0ICszMjU4LDkg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIC8vIENTUzMg
UHJvcGVydGllcwogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9BUFBFQVJBTkNFOiB7CiAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGFwcGVhcmFuY2UsIEFwcGVhcmFuY2UpCi0g
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIGJyZWFrOwotICAgICAgICBpbnQgaWQgPSBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKLSAgICAgICAgRUFwcGVhcmFuY2UgYXBwZWFyYW5jZTsK
LSAgICAgICAgaWYgKGlkID09IENTU19WQUxfTk9ORSkKLSAgICAgICAgICAgIGFwcGVhcmFuY2Ug
PSBOb0FwcGVhcmFuY2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVhcmFuY2UgPSBF
QXBwZWFyYW5jZShpZCAtIENTU19WQUxfQ0hFQ0tCT1ggKyAxKTsKLSAgICAgICAgc3R5bGUtPnNl
dEFwcGVhcmFuY2UoYXBwZWFyYW5jZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0eWxlLT5zZXRBcHBlYXJhbmNlKCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VC
S0lUX0JJTkRJTkc6IHsKQEAgLTM3OTMsNzMgKzM0NzQsMzYgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0JPWF9BTElHTjoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
Ym94QWxpZ24sIEJveEFsaWduKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47
Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9TVFJFVENIOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hB
bGlnbihCU1RSRVRDSCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU19WQUxfU1RBUlQ6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEJveEFsaWduKEJTVEFS
VCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRU5E
OgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hBbGlnbihCRU5EKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9DRU5URVI6Ci0gICAgICAgICAg
ICAgICAgc3R5bGUtPnNldEJveEFsaWduKEJDRU5URVIpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JBU0VMSU5FOgotICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRCb3hBbGlnbihCQkFTRUxJTkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
RUJveEFsaWdubWVudCBib3hBbGlnbm1lbnQgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlm
IChib3hBbGlnbm1lbnQgIT0gQkpVU1RJRlkpCisgICAgICAgICAgICBzdHlsZS0+c2V0Qm94QWxp
Z24oYm94QWxpZ25tZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTX1BST1BfU1JD
OiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfRElSRUNUSU9OOgogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChib3hEaXJlY3Rpb24sIEJveERpcmVjdGlvbikKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTX1ZBTF9OT1JNQUwpCi0gICAgICAgICAgICBzdHlsZS0+c2V0Qm94RGly
ZWN0aW9uKEJOT1JNQUwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHlsZS0+c2V0Qm94
RGlyZWN0aW9uKEJSRVZFUlNFKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAg
ICAgICAgc3R5bGUtPnNldEJveERpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBy
ZXR1cm47ICAgICAgICAKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0xJTkVTOgogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hMaW5lcywgQm94TGluZXMpCi0gICAg
ICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9TSU5HTEUpCi0gICAgICAgICAgICBzdHlsZS0+c2V0
Qm94TGluZXMoU0lOR0xFKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUtPnNldEJv
eExpbmVzKE1VTFRJUExFKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGUtPnNldEJveExpbmVzKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsg
ICAgIAogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfT1JJRU5UOgogICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hPcmllbnQsIEJveE9yaWVudCkKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTX1ZBTF9IT1JJWk9OVEFMIHx8Ci0gICAgICAgICAgICBwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX0lOTElORV9BWElTKQotICAgICAgICAgICAgc3R5
bGUtPnNldEJveE9yaWVudChIT1JJWk9OVEFMKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3R5bGUtPnNldEJveE9yaWVudChWRVJUSUNBTCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hPcmllbnQoKnByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOyAgICAgCiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9QQUNLOgog
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hQYWNrLCBCb3hQYWNrKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TVEFSVDoK
LSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm94UGFjayhCU1RBUlQpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0VORDoKLSAgICAgICAgICAgICAg
ICBzdHlsZS0+c2V0Qm94UGFjayhCRU5EKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9DRU5URVI6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEJv
eFBhY2soQkNFTlRFUik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU19WQUxfSlVTVElGWToKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm94UGFjayhCSlVT
VElGWSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBFQm94QWxpZ25tZW50IGJveFBhY2sg
PSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJFVENIICYmIGJv
eFBhY2sgIT0gQkJBU0VMSU5FKQorICAgICAgICAgICAgc3R5bGUtPnNldEJveFBhY2soYm94UGFj
ayk7CiAgICAgICAgIHJldHVybjsgICAgICAgIAogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9C
T1hfRkxFWDoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94RmxleCwgQm94
RmxleCkKQEAgLTM4ODEsNyArMzUyNSw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9C
T1hfU0laSU5HOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hTaXppbmcs
IEJveFNpemluZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOworICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9DT05URU5UX0JPWCkKICAgICAg
ICAgICAgIHN0eWxlLT5zZXRCb3hTaXppbmcoQ09OVEVOVF9CT1gpOwogICAgICAgICBlbHNlCkBA
IC0zOTMxLDQ4ICszNTc2LDIzIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX1NUWUxF
OgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKGNvbHVtblJ1
bGVTdHlsZSwgQ29sdW1uUnVsZVN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgc3R5bGUtPnNl
dENvbHVtblJ1bGVTdHlsZSgoRUJvcmRlclN0eWxlKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSAtIENTU19WQUxfTk9ORSkpOworICAgICAgICBzdHlsZS0+c2V0Q29sdW1uUnVsZVN0eWxlKCpw
cmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQ09MVU1OX0JSRUFLX0JFRk9SRTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrQmVmb3JlLCBDb2x1bW5CcmVha0JlZm9yZSwgUGFn
ZUJyZWFrKQotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
Q29sdW1uQnJlYWtCZWZvcmUoUEJBVVRPKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1JJR0hU
OgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FMV0FZUzoKLSAgICAgICAgICAgICAgICBzdHls
ZS0+c2V0Q29sdW1uQnJlYWtCZWZvcmUoUEJBTFdBWVMpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FWT0lEOgotICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRDb2x1bW5CcmVha0JlZm9yZShQQkFWT0lEKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQorICAgICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtCZWZvcmUoKnByaW1pdGl2
ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfQ09MVU1OX0JSRUFLX0FGVEVSOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtBZnRlciwgQ29sdW1uQnJlYWtBZnRlciwgUGFnZUJy
ZWFrKQotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q29s
dW1uQnJlYWtBZnRlcihQQkFVVE8pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NfVkFMX0xFRlQ6Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfUklHSFQ6Ci0g
ICAgICAgICAgICBjYXNlIENTU19WQUxfQUxXQVlTOgotICAgICAgICAgICAgICAgIHN0eWxlLT5z
ZXRDb2x1bW5CcmVha0FmdGVyKFBCQUxXQVlTKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVk9JRDoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
Q29sdW1uQnJlYWtBZnRlcihQQkFWT0lEKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQorICAgICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtBZnRlcigqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xV
TU5fQlJFQUtfSU5TSURFOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJ
VEhfVkFMVUUoY29sdW1uQnJlYWtJbnNpZGUsIENvbHVtbkJyZWFrSW5zaWRlLCBQYWdlQnJlYWsp
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX0FVVE8p
Ci0gICAgICAgICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtJbnNpZGUoUEJBVVRPKTsKLSAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9BVk9JRCkK
LSAgICAgICAgICAgIHN0eWxlLT5zZXRDb2x1bW5CcmVha0luc2lkZShQQkFWT0lEKTsKKyAgICAg
ICAgRVBhZ2VCcmVhayBwYiA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgaWYgKHBiICE9IFBC
QUxXQVlTKQorICAgICAgICAgICAgc3R5bGUtPnNldENvbHVtbkJyZWFrSW5zaWRlKHBiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9S
VUxFOgpAQCAtNDAwNiw3ICszNjI2LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01B
UlFVRUVfUkVQRVRJVElPTjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCht
YXJxdWVlTG9vcENvdW50LCBNYXJxdWVlTG9vcENvdW50KQotICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKSByZXR1cm47CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1Nf
VkFMX0lORklOSVRFKQogICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoLTEp
OyAvLyAtMSBtZWFucyByZXBlYXQgZm9yZXZlci4KICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikK
QEAgLTQwMTUsMTAgKzM2MzYsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgIH0KICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRV9TUEVFRDog
ewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlU3BlZWQsIE1hcnF1
ZWVTcGVlZCkgICAgICAKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOworICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBD
U1NfVkFMX1NMT1c6CiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlU3BlZWQo
NTAwKTsgLy8gNTAwIG1zZWMuCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0MCwx
MCArMzY2MSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX0lOQ1JFTUVOVDogewogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlSW5jcmVtZW50LCBNYXJxdWVl
SW5jcmVtZW50KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIENTU19W
QUxfU01BTEw6CiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50
KExlbmd0aCgxLCBGaXhlZCkpOyAvLyAxcHguCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNDA2NSw5NyArMzY4NiwzMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkoaW50CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1NUWUxFOiB7
CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVCZWhhdmlvciwgTWFy
cXVlZUJlaGF2aW9yKSAgICAgIAotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxf
Tk9ORToKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKE1OT05FKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TQ1JPTEw6
Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihNU0NST0xMKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TTElERToKLSAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKE1TTElERSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQUxURVJOQVRFOgotICAg
ICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IoTUFMVEVSTkFURSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
KQorICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcigqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJR
VUVFX0RJUkVDVElPTjogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJx
dWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZh
bHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0dXJuOwotICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
YXNlIENTU19WQUxfRk9SV0FSRFM6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVE
aXJlY3Rpb24oTUZPUldBUkQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX0JBQ0tXQVJEUzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVl
ZURpcmVjdGlvbihNQkFDS1dBUkQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVE
aXJlY3Rpb24oTUFVVE8pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX0FIRUFEOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1VQOiAvLyBXZSBkb24n
dCBzdXBwb3J0IHZlcnRpY2FsIGxhbmd1YWdlcywgc28gQUhFQUQganVzdCBtYXBzIHRvIFVQLgot
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1VUCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfUkVWRVJTRToKLSAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9ET1dOOiAvLyBSRVZFUlNFIGp1c3QgbWFwcyB0byBET1dOLCBz
aW5jZSB3ZSBkb24ndCBkbyB2ZXJ0aWNhbCB0ZXh0LgotICAgICAgICAgICAgICAgIHN0eWxlLT5z
ZXRNYXJxdWVlRGlyZWN0aW9uKE1ET1dOKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJx
dWVlRGlyZWN0aW9uKE1MRUZUKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9SSUdIVDoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVlZURp
cmVjdGlvbihNUklHSFQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlRGly
ZWN0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBDU1NfUFJPUF9fV0VCS0lUX1VTRVJfRFJBRzogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTCh1c2VyRHJhZywgVXNlckRyYWcpICAgICAgCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VXNl
ckRyYWcoRFJBR19BVVRPKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQ1NTX1ZBTF9OT05FOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRVc2VyRHJhZyhEUkFH
X05PTkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFM
X0VMRU1FTlQ6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFVzZXJEcmFnKERSQUdfRUxFTUVO
VCk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0
VXNlckRyYWcoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfVVNFUl9NT0RJRlk6IHsKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwodXNlck1vZGlmeSwgVXNlck1vZGlmeSkgICAgICAKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEVVc2VyTW9kaWZ5IHVzZXJNb2RpZnkgPSBFVXNlck1vZGlm
eShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfUkVBRF9PTkxZKTsKLSAgICAg
ICAgc3R5bGUtPnNldFVzZXJNb2RpZnkodXNlck1vZGlmeSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRVc2VyTW9kaWZ5KCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1VT
RVJfU0VMRUNUOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHVzZXJTZWxl
Y3QsIFVzZXJTZWxlY3QpICAgICAgCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENT
U19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VXNlclNlbGVjdChTRUxFQ1Rf
VEVYVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxf
Tk9ORToKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VXNlclNlbGVjdChTRUxFQ1RfTk9ORSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfVEVYVDoK
LSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VXNlclNlbGVjdChTRUxFQ1RfVEVYVCk7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0VXNlclNlbGVj
dCgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NT
X1BST1BfVEVYVF9PVkVSRkxPVzogewpAQCAtNDE4MCw0MyArMzczNiwyMiBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9NQVJHSU5fVE9QX0NPTExBUFNFOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKG1hcmdpblRvcENvbGxhcHNlLCBNYXJnaW5Ub3BDb2xsYXBzZSkKLSAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVy
bjsKLSAgICAgICAgRU1hcmdpbkNvbGxhcHNlIHZhbDsKLSAgICAgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1NFUEFSQVRF
OgotICAgICAgICAgICAgICAgIHZhbCA9IE1TRVBBUkFURTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9ESVNDQVJEOgotICAgICAgICAgICAgICAgIHZh
bCA9IE1ESVNDQVJEOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICB2YWwgPSBNQ09MTEFQU0U7Ci0gICAgICAgIH0KLSAgICAgICAg
c3R5bGUtPnNldE1hcmdpblRvcENvbGxhcHNlKHZhbCk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJnaW5Ub3BDb2xsYXBzZSgqcHJpbWl0aXZl
VmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9NQVJHSU5fQk9UVE9NX0NPTExBUFNFOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKG1hcmdpbkJvdHRvbUNvbGxhcHNlLCBNYXJnaW5Cb3R0b21Db2xsYXBzZSkKLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJl
dHVybjsKLSAgICAgICAgRU1hcmdpbkNvbGxhcHNlIHZhbDsKLSAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1NFUEFS
QVRFOgotICAgICAgICAgICAgICAgIHZhbCA9IE1TRVBBUkFURTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9ESVNDQVJEOgotICAgICAgICAgICAgICAg
IHZhbCA9IE1ESVNDQVJEOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICB2YWwgPSBNQ09MTEFQU0U7Ci0gICAgICAgIH0KLSAgICAg
ICAgc3R5bGUtPnNldE1hcmdpbkJvdHRvbUNvbGxhcHNlKHZhbCk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJnaW5Cb3R0b21Db2xsYXBzZSgq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQXBwbGUt
c3BlY2lmaWMgY2hhbmdlcy4gIERvIG5vdCBtZXJnZSB0aGVzZSBwcm9wZXJ0aWVzIGludG8gS0hU
TUwuCiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0xJTkVfQ0xBTVA6IHsKICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUNsYW1wLCBMaW5lQ2xhbXApCi0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3R5bGUtPnNldExpbmVDbGFtcChwcmltaXRp
dmVWYWx1ZS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjQ1LDIxICszNzgwLDggQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIH0KICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfVEVYVF9TRUNVUklUWTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTCh0ZXh0U2VjdXJpdHksIFRleHRTZWN1cml0eSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2Vj
dXJpdHkgPSBUU05PTkU7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9ESVNDOgotICAgICAgICAgICAgICAgIHRl
eHRTZWN1cml0eSA9IFRTRElTQzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9DSVJDTEU6Ci0gICAgICAgICAgICAgICAgdGV4dFNlY3VyaXR5ID0gVFND
SVJDTEU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxf
U1FVQVJFOgotICAgICAgICAgICAgICAgIHRleHRTZWN1cml0eT0gVFNTUVVBUkU7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUtPnNldFRleHRTZWN1cml0
eSh0ZXh0U2VjdXJpdHkpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICBzdHlsZS0+c2V0VGV4dFNlY3VyaXR5KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0RBU0hCT0FSRF9SRUdJT046IHsK
QEAgLTQyNjcsNyArMzc4OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX05PTkUp
IHsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfTk9O
RSkgewogICAgICAgICAgICAgc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6
Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00MzcxLDcgKzM4OTMsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91
bmRBdHRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHJldHVybjsKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CisgICAgICAgIHJldHVybjsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTX1ZBTF9GSVhFRDoK
QEAgLTQzOTIsMTkgKzM5MTUsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3Jv
dW5kQ2xpcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSByZXR1cm47CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICByZXR1cm47CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxfQk9SREVS
OgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDbGlwKEJHQk9SREVSKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfUEFERElORzoKLSAgICAgICAgICAg
IGxheWVyLT5zZXRCYWNrZ3JvdW5kQ2xpcChCR1BBRERJTkcpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6IC8vIENTU19WQUxfQ09OVEVOVAotICAgICAgICAgICAgbGF5ZXIt
PnNldEJhY2tncm91bmRDbGlwKEJHQ09OVEVOVCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9
CisgICAgbGF5ZXItPnNldEJhY2tncm91bmRDbGlwKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZENvbXBvc2l0ZShCYWNrZ3JvdW5kTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCkBAIC00NDE3LDUyICszOTMxLDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kQ29tcAogICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENT
U19WQUxfQ0xFQVI6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShD
b21wb3NpdGVDbGVhcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFM
X0NPUFk6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfU09VUkNF
X09WRVI6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShDb21wb3Np
dGVTb3VyY2VPdmVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxf
U09VUkNFX0lOOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21wb3NpdGUoQ29t
cG9zaXRlU291cmNlSW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZB
TF9TT1VSQ0VfT1VUOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21wb3NpdGUo
Q29tcG9zaXRlU291cmNlT3V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENT
U19WQUxfU09VUkNFX0FUT1A6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbXBv
c2l0ZShDb21wb3NpdGVTb3VyY2VBdG9wKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU19WQUxfREVTVElOQVRJT05fT1ZFUjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29tcG9zaXRlKENvbXBvc2l0ZURlc3RpbmF0aW9uT3Zlcik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0RFU1RJTkFUSU9OX0lOOgotICAgICAgICAgICAg
bGF5ZXItPnNldEJhY2tncm91bmRDb21wb3NpdGUoQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0RFU1RJTkFUSU9OX09VVDoK
LSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29tcG9zaXRlKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfREVT
VElOQVRJT05fQVRPUDoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29tcG9zaXRl
KENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX1hPUjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29tcG9z
aXRlKENvbXBvc2l0ZVhPUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1Nf
VkFMX1BMVVNfREFSS0VSOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21wb3Np
dGUoQ29tcG9zaXRlUGx1c0Rhcmtlcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDU1NfVkFMX0hJR0hMSUdIVDoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29t
cG9zaXRlKENvbXBvc2l0ZUhpZ2hsaWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX1BMVVNfTElHSFRFUjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29tcG9zaXRlKENvbXBvc2l0ZVBsdXNMaWdodGVyKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBsYXllci0+
c2V0QmFja2dyb3VuZENvbXBvc2l0ZSgqcHJpbWl0aXZlVmFsdWUpOwogfQogCiB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRPcmlnaW4oQmFja2dyb3VuZExheWVyKiBsYXllciwg
Q1NTVmFsdWUqIHZhbHVlKQpAQCAtNDQ3MiwxOSArMzk0MSwxMCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hcEJhY2tncm91bmRPcmlnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHJldHVybjsKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNh
c2UgQ1NTX1ZBTF9CT1JERVI6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZE9yaWdp
bihCR0JPUkRFUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1BB
RERJTkc6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZE9yaWdpbihCR1BBRERJTkcp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IC8vIENTU19WQUxfQ09OVEVO
VAotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRPcmlnaW4oQkdDT05URU5UKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBsYXllci0+c2V0QmFja2dyb3VuZE9yaWdpbigq
cHJpbWl0aXZlVmFsdWUpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91
bmRJbWFnZShCYWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCkBAIC00NTA5
LDIyICszOTY5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kUmVwZQog
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOwotICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICBjYXNlIENTU19WQUxfUkVQRUFUOgotICAgICAgICAgICAgbGF5ZXItPnNl
dEJhY2tncm91bmRSZXBlYXQoUkVQRUFUKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU19WQUxfUkVQRUFUX1g6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZFJl
cGVhdChSRVBFQVRfWCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFM
X1JFUEVBVF9ZOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRSZXBlYXQoUkVQRUFU
X1kpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT19SRVBFQVQ6
Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZFJlcGVhdChOT19SRVBFQVQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kUmVwZWF0KCpwcmltaXRpdmVWYWx1ZSk7CiB9
CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZFNpemUoQmFja2dyb3VuZExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQpAQCAtNDU4OSw5ICs0MDM0LDkgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kWFBvcwogICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwogICAgIExlbmd0aCBsOwogICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKTsKLSAgICBpZih0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
ICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICBpZiAodHlwZSA+IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19ERUcpCiAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUpLCBGaXhlZCk7Ci0gICAgZWxzZSBpZih0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICBlbHNlIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQogICAgICAg
ICByZXR1cm47CkBAIC00NjEwLDkgKzQwNTUsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1h
cEJhY2tncm91bmRZUG9zCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgTGVuZ3RoIGw7CiAg
ICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgIGlmKHR5
cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfREVHKQorICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKICAgICAg
ICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChz
dHlsZSksIEZpeGVkKTsKLSAgICBlbHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKQorICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKQogICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gMjY1NzIpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMCArMjEsOSBAQAog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgi
CiAKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKQEAgLTQ3LDIwMCArNDYsNDYgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlYwogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKSB7Ci0gICAgICAgIGNhc2UgQ1NT
X1BST1BfQ0xJUF9SVUxFOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmNsaXBSdWxlKCkg
PT0gUlVMRV9OT05aRVJPKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT05aRVJPKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRVZFTk9ERCk7Ci0gICAgICAg
IH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9DTElQX1JVTEU6CisgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5jbGlwUnVsZSgpKTsKICAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9GTE9PRF9PUEFDSVRZOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdmdTdHlsZS0+Zmxvb2RPcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9TVE9QX09QQUNJVFk6CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5zdG9wT3BhY2l0eSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIGNhc2UgQ1NTX1BST1Bf
UE9JTlRFUl9FVkVOVFM6IHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3ZnU3R5bGUtPnBvaW50ZXJF
dmVudHMoKSkgewotICAgICAgICAgICAgY2FzZSBQRV9OT05FOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgIGNh
c2UgUEVfU1RST0tFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9TVFJPS0UpOwotICAgICAgICAgICAgY2FzZSBQRV9GSUxMOgotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9GSUxMKTsKLSAgICAg
ICAgICAgIGNhc2UgUEVfUEFJTlRFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUEFJTlRFRCk7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lC
TEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1ZJU0lCTEUpOwotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX1NUUk9LRToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVklTSUJMRVNUUk9L
RSk7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfRklMTDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVklTSUJMRUZJTEwpOwotICAgICAg
ICAgICAgY2FzZSBQRV9WSVNJQkxFX1BBSU5URUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1ZJU0lCTEVQQUlOVEVEKTsKLSAgICAgICAgICAg
IGNhc2UgUEVfQUxMOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9BTEwpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTX1BST1BfQ09MT1JfSU5URVJQT0xBVElPTjogewotICAgICAgICAgICAgaWYgKHN2Z1N0eWxl
LT5jb2xvckludGVycG9sYXRpb24oKSA9PSBDSV9BVVRPKQotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHN2Z1N0eWxlLT5jb2xvckludGVycG9sYXRpb24oKSA9PSBDSV9TUkdCKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TUkdCKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfTElORUFSUkdCKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU19QUk9QX0NP
TE9SX0lOVEVSUE9MQVRJT05fRklMVEVSUzogewotICAgICAgICAgICAgaWYgKHN2Z1N0eWxlLT5j
b2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ0lfQVVUTykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChzdmdTdHlsZS0+Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENJX1NSR0Ip
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NS
R0IpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9MSU5FQVJSR0IpOwotICAgICAgICB9CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfUE9JTlRFUl9FVkVOVFM6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN2Z1N0eWxlLT5wb2ludGVyRXZlbnRzKCkpOworICAgICAgICBjYXNlIENTU19Q
Uk9QX0NPTE9SX0lOVEVSUE9MQVRJT046CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN2Z1N0eWxlLT5jb2xvckludGVycG9sYXRpb24oKSk7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQ09MT1JfSU5URVJQT0xBVElPTl9GSUxURVJTOgorICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS0+Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cygpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9GSUxMX09QQUNJVFk6CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5maWxsT3BhY2l0eSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfRklMTF9S
VUxFOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmZpbGxSdWxlKCkgPT0gUlVMRV9OT05a
RVJPKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9OT05aRVJPKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRVZFTk9ERCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDU1NfUFJPUF9DT0xPUl9SRU5ERVJJTkc6IHsKLSAgICAgICAgICAgIGlmIChzdmdTdHls
ZS0+Y29sb3JSZW5kZXJpbmcoKSA9PSBDUl9BVVRPKQotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHN2Z1N0eWxlLT5jb2xvclJlbmRlcmluZygpID09IENSX09QVElNSVpFU1BFRUQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09QVElNSVpFU1BF
RUQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9PUFRJTUlaRVFVQUxJVFkpOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQ1NTX1BST1BfSU1BR0VfUkVOREVSSU5HOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5
bGUtPmltYWdlUmVuZGVyaW5nKCkgPT0gSVJfQVVUTykKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBlbHNlIGlm
IChzdmdTdHlsZS0+aW1hZ2VSZW5kZXJpbmcoKSA9PSBJUl9PUFRJTUlaRVNQRUVEKQotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9PUFRJTUlaRVNQ
RUVEKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfT1BUSU1JWkVRVUFMSVRZKTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIENTU19QUk9QX1NIQVBFX1JFTkRFUklORzogewotICAgICAgICAgICAgaWYgKHN2Z1N0
eWxlLT5zaGFwZVJlbmRlcmluZygpID09IFNSX0FVVE8pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgZWxzZSBp
ZiAoc3ZnU3R5bGUtPnNoYXBlUmVuZGVyaW5nKCkgPT0gU1JfT1BUSU1JWkVTUEVFRCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1BUSU1JWkVT
UEVFRCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdmdTdHlsZS0+c2hhcGVSZW5kZXJpbmcoKSA9
PSBTUl9DUklTUEVER0VTKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9DUklTUEVER0VTKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfR0VPTUVUUklDUFJFQ0lT
SU9OKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU19QUk9QX1NUUk9LRV9MSU5FQ0FQOiB7
Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmNhcFN0eWxlKCkgPT0gQnV0dENhcCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQlVUVCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChzdmdTdHlsZS0+Y2FwU3R5bGUoKSA9PSBSb3VuZENhcCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUk9VTkQp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TUVVBUkUpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BS
T1BfU1RST0tFX0xJTkVKT0lOOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmpvaW5TdHls
ZSgpID09IE1pdGVySm9pbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTUlURVIpOwotICAgICAgICAgICAgZWxzZSBpZiAoc3ZnU3R5bGUtPmpv
aW5TdHlsZSgpID09IFJvdW5kSm9pbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfUk9VTkQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CRVZFTCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJPUF9GSUxMX1JVTEU6CisgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5maWxsUnVsZSgpKTsKKyAgICAgICAg
Y2FzZSBDU1NfUFJPUF9DT0xPUl9SRU5ERVJJTkc6CisgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5jb2xvclJlbmRlcmluZygpKTsKKyAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9JTUFHRV9SRU5ERVJJTkc6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5pbWFnZVJlbmRlcmluZygpKTsKKyAgICAgICAgY2FzZSBD
U1NfUFJPUF9TSEFQRV9SRU5ERVJJTkc6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN2Z1N0eWxlLT5zaGFwZVJlbmRlcmluZygpKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9TVFJPS0VfTElORUNBUDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3ZnU3R5bGUtPmNhcFN0eWxlKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX1NUUk9L
RV9MSU5FSk9JTjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3Zn
U3R5bGUtPmpvaW5TdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9TVFJPS0VfTUlURVJM
SU1JVDoKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUt
PnN0cm9rZU1pdGVyTGltaXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX1NUUk9LRV9PUEFDSVRZOgogICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS0+c3Ryb2tlT3BhY2l0eSgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9SRU5ERVJJ
Tkc6IHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3ZnU3R5bGUtPnRleHRSZW5kZXJpbmcoKSkgewot
ICAgICAgICAgICAgY2FzZSBUUl9BVVRPOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgIGNhc2UgVFJfT1BUSU1J
WkVTUEVFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfT1BUSU1JWkVTUEVFRCk7Ci0gICAgICAgICAgICBjYXNlIFRSX09QVElNSVpFTEVHSUJJ
TElUWToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfT1BUSU1JWkVMRUdJQklMSVRZKTsKLSAgICAgICAgICAgIGNhc2UgVFJfR0VPTUVUUklDUFJF
Q0lTSU9OOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9HRU9NRVRSSUNQUkVDSVNJT04pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ1NTX1BST1BfQUxJR05NRU5UX0JBU0VMSU5FOiB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKHN2Z1N0eWxlLT5hbGlnbm1lbnRCYXNlbGluZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEFC
X0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBBQl9CQVNFTElORToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkFTRUxJTkUpOwotICAgICAg
ICAgICAgY2FzZSBBQl9CRUZPUkVfRURHRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkVGT1JFX0VER0UpOwotICAgICAgICAgICAgY2FzZSBB
Ql9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFKTsKLSAgICAgICAgICAgIGNhc2UgQUJf
TUlERExFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9NSURETEUpOwotICAgICAgICAgICAgY2FzZSBBQl9DRU5UUkFMOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5UUkFMKTsKLSAgICAg
ICAgICAgIGNhc2UgQUJfQUZURVJfRURHRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUZURVJfRURHRSk7Ci0gICAgICAgICAgICBjYXNlIEFC
X1RFWFRfQUZURVJfRURHRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfVEVYVF9BRlRFUl9FREdFKTsKLSAgICAgICAgICAgIGNhc2UgQUJfSURF
T0dSQVBISUM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0lERU9HUkFQSElDKTsKLSAgICAgICAgICAgIGNhc2UgQUJfQUxQSEFCRVRJQzoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxQSEFC
RVRJQyk7Ci0gICAgICAgICAgICBjYXNlIEFCX0hBTkdJTkc6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hBTkdJTkcpOwotICAgICAgICAgICAg
Y2FzZSBBQl9NQVRIRU1BVElDQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX01BVEhFTUFUSUNBTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9ET01JTkFOVF9CQVNFTElORTogewotICAgICAgICAg
ICAgc3dpdGNoIChzdmdTdHlsZS0+ZG9taW5hbnRCYXNlbGluZSgpKSB7Ci0gICAgICAgICAgICBj
YXNlIERCX0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBEQl9VU0VfU0NSSVBUOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9VU0VfU0NSSVBU
KTsKLSAgICAgICAgICAgIGNhc2UgREJfTk9fQ0hBTkdFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT19DSEFOR0UpOwotICAgICAgICAgICAg
Y2FzZSBEQl9SRVNFVF9TSVpFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9SRVNFVF9TSVpFKTsKLSAgICAgICAgICAgIGNhc2UgREJfQ0VOVFJB
TDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Q0VOVFJBTCk7Ci0gICAgICAgICAgICBjYXNlIERCX01JRERMRToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTUlERExFKTsKLSAgICAgICAgICAg
IGNhc2UgREJfVEVYVF9CRUZPUkVfRURHRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVF9CRUZPUkVfRURHRSk7Ci0gICAgICAgICAgICBj
YXNlIERCX1RFWFRfQUZURVJfRURHRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfVEVYVF9BRlRFUl9FREdFKTsKLSAgICAgICAgICAgIGNhc2Ug
REJfSURFT0dSQVBISUM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0lERU9HUkFQSElDKTsKLSAgICAgICAgICAgIGNhc2UgREJfQUxQSEFCRVRJ
QzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
QUxQSEFCRVRJQyk7Ci0gICAgICAgICAgICBjYXNlIERCX0hBTkdJTkc6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0hBTkdJTkcpOwotICAgICAg
ICAgICAgY2FzZSBEQl9NQVRIRU1BVElDQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01BVEhFTUFUSUNBTCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX0FOQ0hPUjogewotICAgICAgICAg
ICAgaWYgKHN2Z1N0eWxlLT50ZXh0QW5jaG9yKCkgPT0gVEFfU1RBUlQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NUQVJUKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHN2Z1N0eWxlLT50ZXh0QW5jaG9yKCkgPT0gVEFfTUlERExFKQotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NSURETEUpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9FTkQpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfV1JJ
VElOR19NT0RFOiB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHN2Z1N0eWxlLT53cml0aW5nTW9kZSgp
KSB7Ci0gICAgICAgICAgICBjYXNlIFdNX0xSVEI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xSX1RCKTsKLSAgICAgICAgICAgIGNhc2UgV01f
TFI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0xSKTsKLSAgICAgICAgICAgIGNhc2UgV01fUkxUQjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUkxfVEIpOwotICAgICAgICAgICAgY2FzZSBX
TV9STDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfUkwpOwotICAgICAgICAgICAgY2FzZSBXTV9UQlJMOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQl9STCk7Ci0gICAgICAgICAgICBjYXNl
IFdNX1RCOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9UQik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NfUFJP
UF9URVhUX1JFTkRFUklORzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3ZnU3R5bGUtPnRleHRSZW5kZXJpbmcoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQUxJ
R05NRU5UX0JBU0VMSU5FOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdmdTdHlsZS0+YWxpZ25tZW50QmFzZWxpbmUoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
RE9NSU5BTlRfQkFTRUxJTkU6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN2Z1N0eWxlLT5kb21pbmFudEJhc2VsaW5lKCkpOworICAgICAgICBjYXNlIENTU19QUk9Q
X1RFWFRfQU5DSE9SOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShz
dmdTdHlsZS0+dGV4dEFuY2hvcigpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9XUklUSU5HX01P
REU6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT53
cml0aW5nTW9kZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9DTElQX1BBVEg6CiAgICAgICAg
ICAgICBpZiAoIXN2Z1N0eWxlLT5jbGlwUGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5jbGlwUGF0aCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSk7CkBAIC0yODUsMTQgKzEzMCwxNCBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICByZXR1cm4gc3ZnU3R5
bGUtPnN0cm9rZVdpZHRoKCk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFTRUxJTkVfU0hJRlQ6
IHsKICAgICAgICAgICAgIHN3aXRjaCAoc3ZnU3R5bGUtPmJhc2VsaW5lU2hpZnQoKSkgewotICAg
ICAgICAgICAgY2FzZSBCU19CQVNFTElORToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQkFTRUxJTkUpOwotICAgICAgICAgICAgY2FzZSBCU19T
VVBFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfU1VQRVIpOwotICAgICAgICAgICAgY2FzZSBCU19TVUI6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NVQik7Ci0gICAgICAgICAgICBjYXNl
IEJTX0xFTkdUSDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3ZnU3R5bGUtPmJhc2VsaW5lU2hp
ZnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIGNhc2UgQlNfQkFTRUxJTkU6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQVNFTElORSk7
CisgICAgICAgICAgICAgICAgY2FzZSBCU19TVVBFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NVUEVSKTsKKyAgICAgICAgICAgICAg
ICBjYXNlIEJTX1NVQjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NVQik7CisgICAgICAgICAgICAgICAgY2FzZSBCU19MRU5HVEg6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdmdTdHlsZS0+YmFzZWxpbmVTaGlmdFZhbHVlKCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9NQVJLRVI6
CkluZGV4OiBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNp
b24gMjY1NzIpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NWYWx1
ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQ29s
b3IuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTAyLDQ4ICsxMDIsOCBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVydHkoCiAgICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChhbGlnbm1lbnRCYXNlbGluZSwgQWxpZ25tZW50QmFzZWxpbmUpCiAg
ICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0
eWxlLT5zZXRBbGlnbm1lbnRCYXNlbGluZShBQl9BVVRPKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JBU0VMSU5FOgotICAgICAgICAg
ICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfQkFTRUxJTkUpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxf
QkVGT1JFX0VER0U6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRC
YXNlbGluZShBQl9CRUZPUkVfRURHRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAg
ICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfVEVYVF9CRUZPUkVfRURH
RSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NT
X1ZBTF9NSURETEU6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRC
YXNlbGluZShBQl9NSURETEUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIENTU19WQUxfQ0VOVFJBTDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5
bGUtPnNldEFsaWdubWVudEJhc2VsaW5lKEFCX0NFTlRSQUwpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQUZURVJfRURHRToKLSAgICAg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEFsaWdubWVudEJhc2VsaW5lKEFCX0FGVEVSX0VE
R0UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENT
U19WQUxfVEVYVF9BRlRFUl9FREdFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
QWxpZ25tZW50QmFzZWxpbmUoQUJfVEVYVF9BRlRFUl9FREdFKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0lERU9HUkFQSElDOgotICAg
ICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfSURFT0dS
QVBISUMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IENTU19WQUxfQUxQSEFCRVRJQzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEFs
aWdubWVudEJhc2VsaW5lKEFCX0FMUEhBQkVUSUMpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfSEFOR0lORzoKLSAgICAgICAgICAgICAg
ICAgICAgc3Znc3R5bGUtPnNldEFsaWdubWVudEJhc2VsaW5lKEFCX0hBTkdJTkcpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTUFUSEVN
QVRJQ0FMOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxp
bmUoQUJfTUFUSEVNQVRJQ0FMKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRC
YXNlbGluZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NfUFJPUF9CQVNFTElORV9TSElGVDoKQEAgLTE5MiwyNDAgKzE1Miw3
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVydHkoCiAgICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwb2ludGVyRXZlbnRzLCBQb2ludGVyRXZlbnRz
KQogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQUxMOgotICAgICAg
ICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9BTEwpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTk9ORToK
LSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoUEVfTk9ORSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZB
TF9WSVNJQkxFUEFJTlRFRDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50
ZXJFdmVudHMoUEVfVklTSUJMRV9QQUlOVEVEKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEVGSUxMOgotICAgICAgICAgICAg
ICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9WSVNJQkxFX0ZJTEwpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfVklT
SUJMRVNUUk9LRToKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50ZXJFdmVu
dHMoUEVfVklTSUJMRV9TVFJPS0UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAgICAgICAgICAgc3Zn
c3R5bGUtPnNldFBvaW50ZXJFdmVudHMoUEVfVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9QQUlOVEVEOgotICAgICAgICAg
ICAgICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9QQUlOVEVEKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0ZJTEw6
Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKFBFX0ZJTEwp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19W
QUxfU1RST0tFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50
cyhQRV9TVFJPS0UpOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgCisgICAgICAgICAgICBz
dmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9ET01JTkFOVF9CQVNFTElO
RToKICAgICAgICAgewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZG9t
aW5hbnRCYXNlbGluZSwgRG9taW5hbnRCYXNlbGluZSkKLSAgICAgICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJh
c2VsaW5lKERCX0FVVE8pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU19WQUxfVVNFX1NDUklQVDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5
bGUtPnNldERvbWluYW50QmFzZWxpbmUoREJfVVNFX1NDUklQVCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT19DSEFOR0U6Ci0gICAg
ICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKERCX05PX0NIQU5H
RSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NT
X1ZBTF9SRVNFVF9TSVpFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5h
bnRCYXNlbGluZShEQl9SRVNFVF9TSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0lERU9HUkFQSElDOgotICAgICAgICAgICAgICAg
ICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9JREVPR1JBUEhJQyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BTFBI
QUJFVElDOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGlu
ZShEQl9BTFBIQUJFVElDKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NfVkFMX0hBTkdJTkc6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXREb21pbmFudEJhc2VsaW5lKERCX0hBTkdJTkcpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTUFUSEVNQVRJQ0FMOgotICAgICAg
ICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9NQVRIRU1BVElD
QUwpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENT
U19WQUxfQ0VOVFJBTDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldERvbWluYW50
QmFzZWxpbmUoREJfQ0VOVFJBTCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9NSURETEU6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0
eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKERCX01JRERMRSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0U6Ci0g
ICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKERCX1RFWFRf
QUZURVJfRURHRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9URVhUX0JFRk9SRV9FREdFKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgIAorICAgICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2Vs
aW5lKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU19QUk9QX0NPTE9SX0lOVEVSUE9MQVRJT046CiAgICAgICAgIHsKICAgICAg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbG9ySW50ZXJwb2xhdGlvbiwgQ29s
b3JJbnRlcnBvbGF0aW9uKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX1NSR0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9s
YXRpb24oQ0lfU1JHQik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9MSU5FQVJSR0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRDb2xvckludGVycG9sYXRpb24oQ0lfTElORUFSUkdCKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAg
ICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb24oQ0lfQVVUTyk7Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgIAorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb24oKnByaW1pdGl2ZVZhbHVlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09M
T1JfSU5URVJQT0xBVElPTl9GSUxURVJTOgogICAgICAgICB7CiAgICAgICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChjb2xvckludGVycG9sYXRpb25GaWx0ZXJzLCBDb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX1NSR0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9s
YXRpb25GaWx0ZXJzKENJX1NSR0IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIENTU19WQUxfTElORUFSUkdCOgotICAgICAgICAgICAgICAgICAgICBz
dmdzdHlsZS0+c2V0Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyhDSV9MSU5FQVJSR0IpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQVVU
TzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMoQ0lfQVVUTyk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09MT1JfUkVOREVSSU5HOgorICAgICAg
ICB7CisgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChjb2xvclJlbmRlcmlu
ZywgQ29sb3JSZW5kZXJpbmcpCisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAg
ICAgICAgICAgICAgc3Znc3R5bGUtPnNldENvbG9yUmVuZGVyaW5nKCpwcmltaXRpdmVWYWx1ZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QUk9QX0NM
SVBfUlVMRToKICAgICAgICAgewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoY2xpcFJ1bGUsIENsaXBSdWxlKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IENTU19WQUxfTk9OWkVSTzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENsaXBS
dWxlKFJVTEVfTk9OWkVSTyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9FVkVOT0REOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0Q2xpcFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQor
ICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDbGlwUnVsZSgqcHJpbWl0aXZlVmFsdWUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9GSUxM
X1JVTEU6CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KGZpbGxSdWxlLCBGaWxsUnVsZSkKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19W
QUxfTk9OWkVSTzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxSdWxlKFJV
TEVfTk9OWkVSTyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9FVkVOT0REOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRGaWxs
UnVsZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9TVFJPS0VfTElORUpPSU46CiAgICAgICAgIHsKICAgICAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGpvaW5TdHlsZSwgSm9pblN0eWxlKQotCi0g
ICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9NSVRFUjoKLSAgICAgICAg
ICAgICAgICAgICAgc3Znc3R5bGUtPnNldEpvaW5TdHlsZShNaXRlckpvaW4pOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfUk9VTkQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRKb2luU3R5bGUoUm91bmRKb2luKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JF
VkVMOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0Sm9pblN0eWxlKEJldmVsSm9p
bik7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUpCisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEpvaW5TdHlsZSgqcHJpbWl0aXZl
VmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9JTUFHRV9SRU5ERVJJTkc6CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKGltYWdlUmVuZGVyaW5nLCBJbWFnZVJlbmRlcmluZykKLSAgICAgICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAg
IHN2Z3N0eWxlLT5zZXRJbWFnZVJlbmRlcmluZyhJUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU19WQUxfT1BUSU1JWkVTUEVFRDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUt
PnNldEltYWdlUmVuZGVyaW5nKElSX09QVElNSVpFU1BFRUQpOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTX1ZBTF9PUFRJTUlaRVFVQUxJVFk6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRJbWFnZVJlbmRlcmluZyhJUl9PUFRJTUlaRVFVQUxJVFkpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRJbWFnZVJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9TSEFQRV9SRU5ERVJJTkc6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHNoYXBlUmVuZGVy
aW5nLCBTaGFwZVJlbmRlcmluZykKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRTaGFwZVJlbmRlcmlu
ZyhTUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfT1BUSU1JWkVTUEVFRDoK
LSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKFNSX09QVElN
SVpFU1BFRUQpOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9DUklTUEVER0VTOgotICAg
ICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U2hhcGVSZW5kZXJpbmcoU1JfQ1JJU1BFREdF
Uyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0dFT01FVFJJQ1BSRUNJU0lPTjoKLSAg
ICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKFNSX0dFT01FVFJJ
Q1BSRUNJU0lPTik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUpCisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U19QUk9QX1RFWFRfUkVOREVSSU5HOgogICAgICAgICB7CiAgICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTCh0ZXh0UmVuZGVyaW5nLCBUZXh0UmVuZGVyaW5nKQotICAgICAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICAgICAg
c3Znc3R5bGUtPnNldFRleHRSZW5kZXJpbmcoVFJfQVVUTyk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX09QVElNSVpFU1BFRUQ6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRUZXh0UmVuZGVyaW5nKFRSX09QVElNSVpFU1BFRUQpOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9PUFRJTUlaRUxFR0lCSUxJVFk6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRUZXh0UmVuZGVyaW5nKFRSX09QVElNSVpFTEVHSUJJTElUWSk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDU1NfVkFMX0dFT01FVFJJQ1BSRUNJU0lPTjoKLSAgICAgICAgICAgICAgICAgICAg
c3Znc3R5bGUtPnNldFRleHRSZW5kZXJpbmcoVFJfR0VPTUVUUklDUFJFQ0lTSU9OKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgICAg
ICBzdmdzdHlsZS0+c2V0VGV4dFJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLy8gZW5kIG9mIGlkZW50IG9ubHkgcHJvcGVy
dGllcwpAQCAtNTg1LDIyICszODMsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZH
UHJvcGVydHkoCiAgICAgICAgIGNhc2UgQ1NTX1BST1BfU1RST0tFX0xJTkVDQVA6CiAgICAgICAg
IHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNhcFN0eWxlLCBDYXBT
dHlsZSkKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQlVUVDoKLSAgICAg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENhcFN0eWxlKEJ1dHRDYXApOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfUk9VTkQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZShSb3VuZENhcCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TUVVB
UkU6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZShTcXVhcmVDYXAp
OwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAg
ICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9TVFJPS0VfTUlU
RVJMSU1JVDoKQEAgLTY2OSwyOSArNDUzLDE1IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlTVkdQcm9wZXJ0eSgKICAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX0FOQ0hPUjoKICAgICAg
ICAgewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEFuY2hvciwg
VGV4dEFuY2hvcikKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfU1RBUlQ6
Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRUZXh0QW5jaG9yKFRBX1NUQVJUKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFM
X01JRERMRToKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFRleHRBbmNob3IoVEFf
TUlERExFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX0VORDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFRleHRBbmNo
b3IoVEFfRU5EKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0VGV4dEFuY2hvcigq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9XUklUSU5HX01PREU6CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHdyaXRpbmdNb2RlLCBXcml0aW5nTW9kZSkKICAgICAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0V3Jp
dGluZ01vZGUoKEVXcml0aW5nTW9kZSkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1Nf
VkFMX0xSX1RCKSk7CisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFdyaXRpbmdNb2RlKCpw
cmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU19QUk9QX1NUT1BfQ09MT1I6Cg==
</data>
<flag name="review"
          id="7041"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16692</attachid>
            <date>2007-10-16 23:48:01 -0700</date>
            <delta_ts>2007-10-18 01:50:46 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>12159r2_patch.txt</filename>
            <type>text/plain</type>
            <size>220153</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjY5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTMgQEAKKzIwMDctMTAtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IG1vc3Qgb2YgQ1NTUHJpbWl0aXZlVmFsdWUgZW51bSBtYXBwaW5nIG91dCBvZiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoKQorICAgICAgICBh
bmQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSgpIChhbmQgdGhlaXIgU1ZHIGNvdW50
ZXJwYXJ0cykuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBv
c2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppbml0
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29tcG9zaXRlT3BlcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQmFja2dyb3VuZEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJhY2tn
cm91bmRSZXBlYXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEVCb3hBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVCb3hEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVCb3hMaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRUJveE9yaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRW1wdHlDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVLSFRNTExpbmVCcmVhayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxl
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1h
cmdpbkNvbGxhcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBFTWFycXVlZUJlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFTWFycXVlZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVOQlNQTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU92ZXJm
bG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUGFn
ZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVUYWJsZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRVRleHRBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRVRleHRTZWN1cml0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVVzZXJEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVXNlck1vZGlmeSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVVzZXJTZWxlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV2hpdGVTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVdvcmRCcmVhayk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVdvcmRXcmFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQ2Fw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lSm9p
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dERp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
V2luZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVBbGlnbm1lbnRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRUNvbG9ySW50ZXJwb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNvbG9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRG9taW5hbnRCYXNlbGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUltYWdlUmVuZGVyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUG9pbnRl
ckV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVNoYXBlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBFVGV4dEFuY2hvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRVRleHRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEVXcml0aW5nTW9kZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRDbGlwKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRDb21wb3NpdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZE9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kUmVwZWF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRYUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZFlQb3NpdGlv
bik6CisgICAgICAgICoga3N2ZzIvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNW
R1Byb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJv
cGVydHkpOgorCiAyMDA3LTEwLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NjUzKQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1MjYsNiArMzUyNiw3
IEBACiAJCUUxRUJCQkQ0MEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVCQkJEMzBBQUM5
Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovOyB9OwogCQlFMUVDMjk5RjBCQjA0
QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUMyOTlEMEJCMDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5v
ZGVTZXQuY3BwICovOyB9OwogCQlFMUVDMjlBMDBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2Rl
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVD
Mjk5RTBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmggKi87IH07CisJCUUxRUQ4QUMz
MENDNDlCRTAwMEJGQzU1NyAvKiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVEOEFDMjBDQzQ5QkUwMDBC
RkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oICovOyB9OwogCQlFMUYxRTgyRjBD
M0MyQkI5MDA2REIzOTEgLyogWFNMVEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGMUU4MkQwQzNDMkJCOTAwNkRCMzkxIC8qIFhT
TFRFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJRTFGMUU4MzAwQzNDMkJCOTAwNkRCMzkxIC8qIFhT
TFRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUYxRTgyRTBDM0MyQkI5MDA2REIzOTEgLyogWFNMVEV4dGVuc2lvbnMuaCAqLzsgfTsK
IAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJC
MDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwpAQCAt
NzM2OSw2ICs3MzcwLDcgQEAKIAkJRTFFQkJCRDMwQUFDOUI4NzAwMUZFOEUyIC8qIENTU0NoYXJz
ZXRSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0NoYXJz
ZXRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFQzI5OUQwQkIwNEM2
QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBYUGF0aE5vZGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUVDMjk5RTBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoTm9kZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMUVEOEFDMjBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjFFODJEMEMz
QzJCQjkwMDZEQjM5MSAvKiBYU0xURXh0ZW5zaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBYU0xURXh0ZW5zaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRjFFODJFMEMzQzJCQjkwMDZEQjM5MSAvKiBYU0xURXh0ZW5zaW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xURXh0ZW5zaW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFy
ZWFSZXNpemVDb3JuZXIudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZm
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwNDcsNiArMTEwNDksNyBAQAogCQkJ
CUE4MEU2Q0RCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgKi8sCiAJ
CQkJQTgwRTZDQkMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmggKi8sCiAJ
CQkJOTMwNzA1OTAwOUUwQzc1ODAwQjE3RkU0IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmlkbCAqLywK
KwkJCQlFMUVEOEFDMjBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oICovLAogCQkJCUE4MEU2Q0NEMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5jcHAg
Ki8sCiAJCQkJQTgwRTZDRDUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5LmggKi8sCiAJ
CQkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0IC8qIENTU1Byb3BlcnR5TmFtZXMuaW4gKi8sCkBA
IC0xMzIxNyw2ICsxMzIyMCw3IEBACiAJCQkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpT
U3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTkwOUFDMENCQ0Q2QjUwMDI5
QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzlBREQyMzBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUxRUQ4QUMzMENDNDlCRTAwMEJGQzU1NyAvKiBDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjY2NTMpCisrKyBXZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYg
KzIsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNrQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3Vy
eWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsOCArMjUsOCBA
QAogCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC0yMTYsMTc5ICsyMTcsNiBAQCBz
dGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gCiAKIGNvbnN0IHVuc2lnbmVk
IG51bUNvbXB1dGVkUHJvcGVydGllcyA9IHNpemVvZihjb21wdXRlZFByb3BlcnRpZXMpIC8gc2l6
ZW9mKGNvbXB1dGVkUHJvcGVydGllc1swXSk7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsKLSAgICBzd2l0Y2ggKGxl
bmd0aC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBBdXRvOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICBjYXNlIFdlYkNvcmU6
OkZpeGVkOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgu
dmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgIGNhc2UgSW50cmlu
c2ljOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lO
VFJJTlNJQyk7Ci0gICAgICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01JTl9JTlRSSU5TSUMpOwotICAgICAgICBj
YXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxl
bmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAg
ICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAgIGNhc2UgU3RhdGljOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQot
Ci0vLyBIYW5kbGVzIHNwZWNpYWwgdmFsdWUgZm9yICJub25lIi4KLXN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZUZvck1heExlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsKLSAg
ICBpZiAobGVuZ3RoLmlzRml4ZWQoKSAmJiBsZW5ndGgudmFsdWUoKSA9PSB1bmRlZmluZWRMZW5n
dGgpCi0gICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsK
LSAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoKTsKLX0KLQotc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlRm9yQm9yZGVyU3R5bGUoRUJvcmRlclN0eWxlIHN0eWxlKQotewot
ICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICAgICAgY2FzZSBCTk9ORToKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgY2FzZSBC
SElEREVOOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0hJRERFTik7Ci0gICAgICAgIGNhc2UgSU5TRVQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5TRVQpOwotICAgICAgICBjYXNlIEdST09WRToKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9HUk9PVkUpOwot
ICAgICAgICBjYXNlIFJJREdFOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1JJREdFKTsKLSAgICAgICAgY2FzZSBPVVRTRVQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1VUU0VUKTsKLSAgICAgICAgY2Fz
ZSBET1RURUQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfRE9UVEVEKTsKLSAgICAgICAgY2FzZSBEQVNIRUQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfREFTSEVEKTsKLSAgICAgICAgY2FzZSBTT0xJRDoK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT0xJRCk7
Ci0gICAgICAgIGNhc2UgRE9VQkxFOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0RPVUJMRSk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVG
b3JUZXh0QWxpZ24oRVRleHRBbGlnbiBhbGlnbikKLXsKLSAgICBzd2l0Y2ggKGFsaWduKSB7Ci0g
ICAgICAgIGNhc2UgVEFBVVRPOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICBjYXNlIExFRlQ6Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7Ci0gICAgICAgIGNhc2UgUklH
SFQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklH
SFQpOwotICAgICAgICBjYXNlIENFTlRFUjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5URVIpOwotICAgICAgICBjYXNlIEpVU1RJRlk6Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSlVTVElGWSk7Ci0g
ICAgICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfX1dFQktJVF9MRUZUKTsKLSAgICAgICAgY2FzZSBXRUJLSVRfUklH
SFQ6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dF
QktJVF9SSUdIVCk7Ci0gICAgICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX0NFTlRFUik7Ci0gICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JBcHBlYXJhbmNlKEVBcHBlYXJhbmNlIGFwcGVh
cmFuY2UpCi17Ci0gICAgc3dpdGNoIChhcHBlYXJhbmNlKSB7Ci0gICAgICAgIGNhc2UgTm9BcHBl
YXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X05PTkUpOwotICAgICAgICBjYXNlIENoZWNrYm94QXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DSEVDS0JPWCk7Ci0gICAgICAgIGNh
c2UgUmFkaW9BcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1JBRElPKTsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uQXBwZWFyYW5jZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QVVNIX0JV
VFRPTik7Ci0gICAgICAgIGNhc2UgU3F1YXJlQnV0dG9uQXBwZWFyYW5jZToKLSAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TUVVBUkVfQlVUVE9OKTsKLSAg
ICAgICAgY2FzZSBCdXR0b25BcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0JVVFRPTik7Ci0gICAgICAgIGNhc2UgQnV0dG9uQmV2ZWxB
cHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0JVVFRPTl9CRVZFTCk7Ci0gICAgICAgIGNhc2UgTGlzdGJveEFwcGVhcmFuY2U6Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTElTVEJPWCk7Ci0g
ICAgICAgIGNhc2UgTGlzdEl0ZW1BcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xJU1RJVEVNKTsKLSAgICAgICAgY2FzZSBNZW51bGlz
dEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTUVOVUxJU1QpOwotICAgICAgICBjYXNlIE1lbnVsaXN0QnV0dG9uQXBwZWFyYW5jZToK
LSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NRU5VTElT
VF9CVVRUT04pOwotICAgICAgICBjYXNlIE1lbnVsaXN0VGV4dEFwcGVhcmFuY2U6Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTUVOVUxJU1RfVEVYVCk7
Ci0gICAgICAgIGNhc2UgTWVudWxpc3RUZXh0RmllbGRBcHBlYXJhbmNlOgotICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01FTlVMSVNUX1RFWFRGSUVMRCk7
Ci0gICAgICAgIGNhc2UgU2Nyb2xsYmFyQnV0dG9uVXBBcHBlYXJhbmNlOgotICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUkJVVFRPTl9VUCk7
Ci0gICAgICAgIGNhc2UgU2Nyb2xsYmFyQnV0dG9uRG93bkFwcGVhcmFuY2U6Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xMQkFSQlVUVE9OX0RP
V04pOwotICAgICAgICBjYXNlIFNjcm9sbGJhckJ1dHRvbkxlZnRBcHBlYXJhbmNlOgotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUkJVVFRP
Tl9MRUZUKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25SaWdodEFwcGVhcmFuY2U6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xMQkFS
QlVUVE9OX1JJR0hUKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJUcmFja0hvcml6b250YWxBcHBl
YXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1NDUk9MTEJBUlRSQUNLX0hPUklaT05UQUwpOwotICAgICAgICBjYXNlIFNjcm9sbGJhclRyYWNr
VmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRSQUNLX1ZFUlRJQ0FMKTsKLSAgICAgICAgY2FzZSBTY3Jv
bGxiYXJUaHVtYkhvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRIVU1CX0hPUklaT05UQUwpOwotICAg
ICAgICBjYXNlIFNjcm9sbGJhclRodW1iVmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTEJBUlRIVU1CX1ZFUlRJ
Q0FMKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJHcmlwcGVySG9yaXpvbnRhbEFwcGVhcmFuY2U6
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xM
QkFSR1JJUFBFUl9IT1JJWk9OVEFMKTsKLSAgICAgICAgY2FzZSBTY3JvbGxiYXJHcmlwcGVyVmVy
dGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1NDUk9MTEJBUkdSSVBQRVJfVkVSVElDQUwpOwotICAgICAgICBjYXNlIFNsaWRl
ckhvcml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NMSURFUl9IT1JJWk9OVEFMKTsKLSAgICAgICAgY2FzZSBTbGlkZXJW
ZXJ0aWNhbEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfU0xJREVSX1ZFUlRJQ0FMKTsKLSAgICAgICAgY2FzZSBTbGlkZXJUaHVtYkhv
cml6b250YWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NMSURFUlRIVU1CX0hPUklaT05UQUwpOwotICAgICAgICBjYXNlIFNsaWRl
clRodW1iVmVydGljYWxBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX1NMSURFUlRIVU1CX1ZFUlRJQ0FMKTsKLSAgICAgICAgY2FzZSBD
YXJldEFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQ0FSRVQpOwotICAgICAgICBjYXNlIFNlYXJjaEZpZWxkQXBwZWFyYW5jZToKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRUFSQ0hGSUVM
RCk7Ci0gICAgICAgIGNhc2UgU2VhcmNoRmllbGREZWNvcmF0aW9uQXBwZWFyYW5jZToKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9E
RUNPUkFUSU9OKTsKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uQXBw
ZWFyYW5jZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9TRUFSQ0hGSUVMRF9SRVNVTFRTX0RFQ09SQVRJT04pOwotICAgICAgICBjYXNlIFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbkFwcGVhcmFuY2U6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfU0VBUkNIRklFTERfUkVTVUxUU19CVVRUT04pOwotICAgICAg
ICBjYXNlIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uQXBwZWFyYW5jZToKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TRUFSQ0hGSUVMRF9DQU5DRUxfQlVU
VE9OKTsKLSAgICAgICAgY2FzZSBUZXh0RmllbGRBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RFWFRGSUVMRCk7Ci0gICAgICAgIGNh
c2UgVGV4dEFyZWFBcHBlYXJhbmNlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1RFWFRBUkVBKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZUZvck1hcmdpbkNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBjb2xsYXBzZSkKLXsKLSAgICBzd2l0
Y2ggKGNvbGxhcHNlKSB7Ci0gICAgICAgIGNhc2UgTUNPTExBUFNFOgotICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NPTExBUFNFKTsKLSAgICAgICAgY2Fz
ZSBNU0VQQVJBVEU6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfU0VQQVJBVEUpOwotICAgICAgICBjYXNlIE1ESVNDQVJEOgotICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0RJU0NBUkQpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdykKIHsK
ICAgICBpZiAoIXNoYWRvdykKQEAgLTQyOSwxMyArMjU3LDEzIEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBnZXRQb3NpdGlvbk8KICAgICB9CiAKICAgICBpZiAoc3R5bGUtPnBvc2l0aW9u
KCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBzdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobCk7CisgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUobCk7CiAKICAgICBpZiAoc3R5bGUtPnBvc2l0aW9uKCkgPT0g
UmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGVub3VnaCB0byBz
aW1wbHkgcmV0dXJuICJhdXRvIiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQgaWYgdGhlIG90aGVyIHNp
ZGUgaXMgZGVmaW5lZC4KICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMgaWYgbGVmdCBpcyBhdXRv
IGFuZCByaWdodCBpcyBub3QgYXV0bywgdGhlbiBsZWZ0J3MgY29tcHV0ZWQgdmFsdWUgaXMgbmVn
YXRpdmUgcmlnaHQuCiAgICAgICAgIC8vIFNvIHdlIHNob3VsZCBnZXQgdGhlIG9wcG9zaXRlIGxl
bmd0aCB1bml0IGFuZCBzZWUgaWYgaXQgaXMgYXV0by4KLSAgICAgICAgcmV0dXJuIHZhbHVlRm9y
TGVuZ3RoKGwpOworICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGwpOwogCiAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwogfQpAQCAtNDkz
LDM3ICszMjEsMTEgQEAgdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzcwog
ICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogfQogCi0vLyBEaXNwbGF5IGlu
dGVnZXJzIGluIGludGVnZXIgZm9ybWF0IGluc3RlYWQgb2YgIjEuMCIuCi1zdGF0aWMgU3RyaW5n
IG51bWJlckFzU3RyaW5nKGRvdWJsZSBuKQotewotICAgIGxvbmcgaSA9IHN0YXRpY19jYXN0PGxv
bmc+KG4pOwotICAgIHJldHVybiBpID09IG4gPyBTdHJpbmc6Om51bWJlcihpKSA6IFN0cmluZzo6
bnVtYmVyKG4pOwotfQotCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCwgVXBkYXRlTGF5b3V0KTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWVGcm9tTGVu
Z3RoKExlbmd0aCBsZW5ndGgpCi17Ci0gICAgU3RyaW5nIHN0cmluZzsKLSAgICBzd2l0Y2ggKGxl
bmd0aC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBQZXJjZW50OgotICAgICAgICAgICAgc3RyaW5n
ID0gbnVtYmVyQXNTdHJpbmcobGVuZ3RoLnBlcmNlbnQoKSkgKyAiJSI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHN0cmluZyA9IG51bWJlckFz
U3RyaW5nKGxlbmd0aC5jYWxjTWluVmFsdWUoMCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAgIHN0cmluZyA9ICJhdXRvIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyk7Ci19Ci0KIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQo
KTsKQEAgLTU1Miw1NiArMzU0LDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWMKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9OT05FKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfU0laRTog
ewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IG5ldyBDU1NWYWx1ZUxp
c3QodHJ1ZSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JMZW5ndGgoc3R5bGUt
PmJhY2tncm91bmRTaXplKCkud2lkdGgpKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1
ZUZvckxlbmd0aChzdHlsZS0+YmFja2dyb3VuZFNpemUoKS5oZWlnaHQpKTsKKyAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJhY2tncm91bmRTaXpl
KCkud2lkdGgpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3R5bGUtPmJhY2tncm91bmRTaXplKCkuaGVpZ2h0KSk7CiAgICAgICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0gIAogICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tH
Uk9VTkRfUkVQRUFUOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+YmFja2dyb3VuZFJlcGVh
dCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSRVBFQVQ6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBFQVQpOwotICAgICAgICAg
ICAgICAgIGNhc2UgUkVQRUFUX1g6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRVBFQVRfWCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBS
RVBFQVRfWToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX1JFUEVBVF9ZKTsKLSAgICAgICAgICAgICAgICBjYXNlIE5PX1JFUEVBVDoKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05P
X1JFUEVBVCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFJlcGVhdCgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ09NUE9TSVRFOgotICAgICAgICAgICAgc3dpdGNoIChz
dHlsZS0+YmFja2dyb3VuZENvbXBvc2l0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21w
b3NpdGVDbGVhcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0NMRUFSKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZUNvcHk6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9DT1BZKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VS
Q0VfT1ZFUik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VJbjoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NPVVJD
RV9JTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VSQ0Vf
T1VUKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TT1VSQ0Vf
QVRPUCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXI6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9E
RVNUSU5BVElPTl9PVkVSKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0
aW9uSW46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9ERVNUSU5BVElPTl9JTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21wb3NpdGVE
ZXN0aW5hdGlvbk91dDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0RFU1RJTkFUSU9OX09VVCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
b21wb3NpdGVEZXN0aW5hdGlvbkF0b3A6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ERVNUSU5BVElPTl9BVE9QKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1hPUik7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21w
b3NpdGVQbHVzRGFya2VyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfUExVU19EQVJLRVIpOwotICAgICAgICAgICAgICAgIGNhc2UgQ29t
cG9zaXRlSGlnaGxpZ2h0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfSElHSExJR0hUKTsKLSAgICAgICAgICAgICAgICBjYXNlIENvbXBv
c2l0ZVBsdXNMaWdodGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfUExVU19MSUdIVEVSKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5iYWNrZ3JvdW5kQ29tcG9z
aXRlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVOVDoKICAg
ICAgICAgICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZEF0dGFjaG1lbnQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU0NST0xMKTsKQEAgLTYw
OSw0OCArMzY5LDIwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMK
ICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfQ0xJUDoKICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tHUk9VTkRfT1JJR0lOOiB7CiAgICAgICAgICAgICBF
QmFja2dyb3VuZEJveCBib3ggPSAocHJvcGVydHlJRCA9PSBDU1NfUFJPUF9fV0VCS0lUX0JBQ0tH
Uk9VTkRfQ0xJUCA/IHN0eWxlLT5iYWNrZ3JvdW5kQ2xpcCgpIDogc3R5bGUtPmJhY2tncm91bmRP
cmlnaW4oKSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGJveCkgewotICAgICAgICAgICAgICAgIGNh
c2UgQkdCT1JERVI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9CT1JERVIpOwotICAgICAgICAgICAgICAgIGNhc2UgQkdQQURESU5HOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
UEFERElORyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCR0NPTlRFTlQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT05URU5UKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGJv
eCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lUSU9O
OiB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gbmV3IENTU1ZhbHVl
TGlzdCh0cnVlKTsKIAotICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aChzdHlsZS0+YmFja2dyb3Vu
ZFhQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCi0gICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgucGVy
Y2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVl
KGxlbmd0aC52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0KLSAgICAgICAg
ICAgIGxlbmd0aCA9IHN0eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBp
ZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFhQb3NpdGlvbigpKSk7CisgICAgICAgICAgICBsaXN0
LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5iYWNrZ3JvdW5kWVBvc2l0aW9u
KCkpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTl9YOiB7Ci0gICAgICAgICAg
ICBMZW5ndGggbGVuZ3RoKHN0eWxlLT5iYWNrZ3JvdW5kWFBvc2l0aW9uKCkpOwotICAgICAgICAg
ICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShsZW5ndGgudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9CQUNLR1JPVU5EX1BPU0lU
SU9OX1k6IHsKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGgoc3R5bGUtPmJhY2tncm91bmRZUG9z
aXRpb24oKSk7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGxlbmd0aC52YWx1ZSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIENTU19Q
Uk9QX0JBQ0tHUk9VTkRfUE9TSVRJT05fWDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPmJhY2tncm91bmRYUG9zaXRpb24oKSk7CisgICAgICAgIGNhc2Ug
Q1NTX1BST1BfQkFDS0dST1VORF9QT1NJVElPTl9ZOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YmFja2dyb3VuZFlQb3NpdGlvbigpKTsKICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0U6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmJv
cmRlckNvbGxhcHNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0NPTExBUFNFKTsKQEAgLTY3NCwxMyArNDA2LDEzIEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2FzZSBDU1NfUFJPUF9CT1JE
RVJfTEVGVF9DT0xPUjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3Ioc3R5bGUsIHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BS
T1BfQk9SREVSX1RPUF9TVFlMRToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckJvcmRlclN0
eWxlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJvcmRlclRvcFN0eWxlKCkpOwogICAgICAgICBjYXNlIENT
U19QUk9QX0JPUkRFUl9SSUdIVF9TVFlMRToKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckJv
cmRlclN0eWxlKHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKICAgICAg
ICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfQk9UVE9NX1NUWUxFOgotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlRm9yQm9yZGVyU3R5bGUoc3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tU3R5
bGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0xFRlRfU1RZTEU6Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JCb3JkZXJTdHlsZShzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkp
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym9yZGVy
TGVmdFN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfV0lEVEg6CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3JkZXJUb3BX
aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgY2FzZSBDU1NfUFJP
UF9CT1JERVJfUklHSFRfV0lEVEg6CkBAIC02OTIsOTkgKzQyNCwzMyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9UVE9N
OgogICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUsIENTU19Q
Uk9QX0JPVFRPTSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfQUxJR046Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hBbGlnbigpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBCU1RSRVRDSDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1NUUkVUQ0gpOwotICAgICAgICAgICAgICAgIGNhc2UgQlNUQVJUOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
U1RBUlQpOwotICAgICAgICAgICAgICAgIGNhc2UgQkNFTlRFUjoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NFTlRFUik7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBCRU5EOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfRU5EKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElO
RToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0JBU0VMSU5FKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJKVVNUSUZZOgotICAgICAgICAg
ICAgICAgICAgICBicmVhazsgLy8gbm90IGFsbG93ZWQKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hBbGlnbigpKTsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPWF9ESVJFQ1RJT046Ci0gICAgICAgICAgICBz
d2l0Y2ggKHN0eWxlLT5ib3hEaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQk5P
Uk1BTDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCUkVWRVJTRToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JFVkVSU0Up
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3R5bGUtPmJveERpcmVjdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lU
X0JPWF9GTEVYOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+Ym94RmxleCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNh
c2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfRkxFWF9HUk9VUDoKICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveEZsZXhHcm91cCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfTElO
RVM6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5ib3hMaW5lcygpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBTSU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9TSU5HTEUpOwotICAgICAgICAgICAgICAgIGNhc2UgTVVMVElQ
TEU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9NVUxUSVBMRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Ym94TGluZXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BS
T1BfX1dFQktJVF9CT1hfT1JESU5BTF9HUk9VUDoKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPmJveE9yZGluYWxHcm91cCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfT1JJRU5U
OgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94T3JpZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIEhPUklaT05UQUw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IT1JJWk9OVEFMKTsKLSAgICAgICAgICAgICAgICBjYXNl
IFZFUlRJQ0FMOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfVkVSVElDQUwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0JPWF9QQUNLOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Ym94UGFj
aygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBCU1RBUlQ6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TVEFSVCk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBCRU5EOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfRU5EKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJDRU5URVI6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9D
RU5URVIpOwotICAgICAgICAgICAgICAgIGNhc2UgQkpVU1RJRlk6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9KVVNUSUZZKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIEJTVFJFVENIOgotICAgICAgICAgICAgICAgIGNhc2UgQkJBU0VMSU5F
OgotICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gbm90IGFsbG93ZWQKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5ib3hP
cmllbnQoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfUEFDSzogeworICAg
ICAgICAgICAgRUJveEFsaWdubWVudCBib3hQYWNrID0gc3R5bGUtPmJveFBhY2soKTsKKyAgICAg
ICAgICAgIEFTU0VSVChib3hQYWNrICE9IEJTVFJFVENIKTsKKyAgICAgICAgICAgIEFTU0VSVChi
b3hQYWNrICE9IEJCQVNFTElORSk7CisgICAgICAgICAgICBpZiAoYm94UGFjayA9PSBCSlVTVElG
WSB8fCBib3hQYWNrPT0gQkJBU0VMSU5FKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShib3hQYWNrKTsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX1NIQURPVzoKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHlsZS0+Ym94U2hhZG93KCkpOwogICAgICAgICBjYXNl
IENTU19QUk9QX0NBUFRJT05fU0lERToKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmNhcHRp
b25TaWRlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENBUExFRlQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIENBUFJJR0hUOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q0FQVE9QOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfVE9QKTsKLSAgICAgICAgICAgICAgICBjYXNlIENBUEJPVFRPTToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JPVFRPTSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+Y2FwdGlvblNpZGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQ0xFQVI6Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5jbGVhcigpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDTk9ORToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgICAgIGNhc2UgQ0xFRlQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MRUZUKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIENSSUdIVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JJR0hUKTsKLSAgICAgICAgICAgICAgICBjYXNl
IENCT1RIOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfQk9USCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y2xlYXIoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1Bf
Q09MT1I6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5j
b2xvcigpLnJnYigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9DT1VO
VDoKQEAgLTc5OCw0MiArNDY0LDE1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWMKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX0NPTE9S
OgogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZSwgc3R5
bGUtPmNvbHVtblJ1bGVDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0NP
TFVNTl9SVUxFX1NUWUxFOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVyU3R5bGUo
c3R5bGUtPmNvbHVtblJ1bGVTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtblJ1bGVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0NPTFVNTl9SVUxFX1dJRFRIOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y29sdW1uUnVsZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpOwogICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX0JSRUFL
X0FGVEVSOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtBZnRlcigpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICBj
YXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQUxXQVlTKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9B
Vk9JRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShzdHlsZS0+Y29sdW1uQnJlYWtBZnRlcigpKTsKICAgICAgICAgY2FzZSBDU1NfUFJP
UF9fV0VCS0lUX0NPTFVNTl9CUkVBS19CRUZPUkU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxl
LT5jb2x1bW5CcmVha0JlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQQkFVVE86Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9B
VVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQUxXQVlTOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUxXQVlTKTsKLSAgICAgICAg
ICAgICAgICBjYXNlIFBCQVZPSUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVk9JRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y29sdW1uQnJlYWtCZWZvcmUo
KSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xVTU5fQlJFQUtfSU5TSURFOgot
ICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+Y29sdW1uQnJlYWtJbnNpZGUoKSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgUEJBVVRPOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBQQkFW
T0lEOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQVZPSUQpOwotICAgICAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOyAvLyBub3QgYWxsb3dlZAotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmNvbHVtbkJyZWFrSW5zaWRl
KCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQ09MVU1OX1dJRFRIOgogICAgICAg
ICAgICAgaWYgKHN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7CkBAIC04NDYsMTEyICs0
ODUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKCgq
Y3Vyc29ycylbaV0uY3Vyc29ySW1hZ2UtPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VS
SSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZTsK
LSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6Ci0gICAgICAgICAgICAgICAgICAgIHZh
bHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ1JPU1NIQUlSKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoK
LSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9ERUZBVUxUKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDVVJTT1JfUE9JTlRFUjoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QT0lOVEVSKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NT1ZFKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ0VMTDoKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9D
RUxMKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
VVJTT1JfVkVSVElDQUxfVEVYVDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WRVJUSUNBTF9URVhUKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09OVEVYVF9NRU5VOgotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NP
TlRFWFRfTUVOVSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1VSU09SX0FMSUFTOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0FMSUFTKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09QWToKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DT1BZKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTk9ORToKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05F
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJT
T1JfUFJPR1JFU1M6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfUFJPR1JFU1MpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OT19EUk9QOgotICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PX0RST1ApOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9OT1RfQUxMT1dF
RDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9OT1RfQUxMT1dFRCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX0lOOgotICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX19XRUJLSVRfWk9PTV9JTik7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dF
QktJVF9aT09NX09VVDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX1pPT01fT1VUKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6Ci0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfRV9SRVNJWkUp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNP
Ul9ORV9SRVNJWkU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTkVfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVTSVpFOgotICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XX1JFU0laRSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05fUkVT
SVpFOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05fUkVTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDVVJTT1JfU0VfUkVTSVpFOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NFX1JFU0laRSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9T
V19SRVNJWkUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENVUlNPUl9TX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1VSU09SX1dfUkVTSVpFOgotICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1dfUkVTSVpFKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1Jf
RVdfUkVTSVpFOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0VXX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OU19SRVNJWkUpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JF
U0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9ORVNXX1JFU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgotICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05XU0VfUkVTSVpFKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQ09MX1JF
U0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9DT0xfUkVTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDVVJTT1JfUk9XX1JFU0laRToKLSAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1dfUkVTSVpFKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfVEVYVDoKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9U
RVhUKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
VVJTT1JfV0FJVDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9XQUlUKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDVVJTT1JfSEVMUDoKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9IRUxQKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDVVJTT1JfQUxMX1NDUk9MTDoKLSAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTExfU0NS
T0xMKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBBU1NFUlQodmFsdWUpOworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+Y3Vyc29yKCkpOwogICAgICAgICAgICAgaWYg
KGxpc3QpIHsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWUpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKQEAgLTk1OSw3NyArNDkzLDEzIEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9ESVJFQ1RJ
T046Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXJlY3Rpb24oKSkgewotICAgICAgICAg
ICAgICAgIGNhc2UgTFRSOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfTFRSKTsKLSAgICAgICAgICAgICAgICBjYXNlIFJUTDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1JUTCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+ZGlyZWN0aW9uKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0RJU1BMQVk6Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5kaXNwbGF5KCkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIElOTElORToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0lOTElORSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBCTE9DSzoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JMT0NL
KTsKLSAgICAgICAgICAgICAgICBjYXNlIExJU1RfSVRFTToKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xJU1RfSVRFTSk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBSVU5fSU46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SVU5fSU4pOwotICAgICAgICAgICAgICAgIGNhc2UgQ09N
UEFDVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0NPTVBBQ1QpOwotICAgICAgICAgICAgICAgIGNhc2UgSU5MSU5FX0JMT0NLOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5M
SU5FX0JMT0NLKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRBQkxFOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEUpOwotICAgICAg
ICAgICAgICAgIGNhc2UgSU5MSU5FX1RBQkxFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSU5MSU5FX1RBQkxFKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JPV19HUk9VUCk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9IRUFERVJfR1JPVVApOwotICAg
ICAgICAgICAgICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfRk9PVEVSX0dST1VQ
KTsKLSAgICAgICAgICAgICAgICBjYXNlIFRBQkxFX1JPVzoKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RBQkxFX1JPVyk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DT0xVTU5fR1JPVVApOwot
ICAgICAgICAgICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVEFCTEVfQ09MVU1OKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIFRBQkxFX0NFTEw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DRUxMKTsKLSAgICAgICAgICAgICAg
ICBjYXNlIFRBQkxFX0NBUFRJT046Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9UQUJMRV9DQVBUSU9OKTsKLSAgICAgICAgICAgICAgICBj
YXNlIEJPWDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX19XRUJLSVRfQk9YKTsKLSAgICAgICAgICAgICAgICBjYXNlIElOTElORV9CT1g6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9fV0VCS0lUX0lOTElORV9CT1gpOwotICAgICAgICAgICAgICAgIGNhc2UgTk9ORToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoc3R5bGUtPmRpc3BsYXkoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfRU1QVFlfQ0VMTFM6
Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5lbXB0eUNlbGxzKCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIFNIT1c6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TSE9XKTsKLSAgICAgICAgICAgICAgICBjYXNlIEhJREU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ISURF
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5lbXB0eUNlbGxzKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0ZMT0FUOgot
ICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+ZmxvYXRpbmcoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgRk5PTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgICAgICBjYXNlIEZMRUZUOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTEVGVCk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBGUklHSFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SSUdIVCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+ZmxvYXRpbmco
KSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9GQU1JTFk6CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBvbmx5IHJldHVybnMgdGhlIGZpcnN0IGZhbWlseS4KICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZhbWls
eSgpLmZhbWlseSgpLmRvbVN0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7
CkBAIC0xMDU0LDcgKzUyNCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWMKICAgICAgICAgY2FzZSBDU1NfUFJPUF9IRUlHSFQ6CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzaXpp
bmdCb3gocmVuZGVyZXIpLmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+aGVpZ2h0KCkpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+aGVpZ2h0KCkpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfSElHSExJR0hUOgogICAgICAgICAgICAgaWYgKHN0
eWxlLT5oaWdobGlnaHQoKSA9PSBudWxsQXRvbSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CkBAIC0xMDkwLDEzOCArNTYwLDU3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpLT51
cmwoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOwogICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwogICAgICAgICBjYXNlIENTU19QUk9Q
X0xJU1RfU1RZTEVfUE9TSVRJT046Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5saXN0U3R5
bGVQb3NpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBPVVRTSURFOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1VUU0lERSk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBJTlNJREU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9JTlNJREUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPmxpc3RTdHls
ZVBvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRToKLSAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPmxpc3RTdHlsZVR5cGUoKSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgTE5PTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgICAgICBjYXNlIERJU0M6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ESVND
KTsKLSAgICAgICAgICAgICAgICBjYXNlIENJUkNMRToKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NJUkNMRSk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBTUVVBUkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9TUVVBUkUpOwotICAgICAgICAgICAgICAgIGNhc2UgTERFQ0lNQUw6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9ERUNJTUFMKTsKLSAgICAgICAgICAgICAgICBjYXNlIERFQ0lNQUxfTEVBRElOR19aRVJPOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
REVDSU1BTF9MRUFESU5HX1pFUk8pOwotICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJfUk9NQU46
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9MT1dFUl9ST01BTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBVUFBFUl9ST01BTjoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVS
X1JPTUFOKTsKLSAgICAgICAgICAgICAgICBjYXNlIExPV0VSX0dSRUVLOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTE9XRVJfR1JFRUsp
OwotICAgICAgICAgICAgICAgIGNhc2UgTE9XRVJfQUxQSEE6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUl9BTFBIQSk7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBMT1dFUl9MQVRJTjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPV0VSX0xBVElOKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFVQUEVSX0FMUEhBOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVVBQRVJfQUxQSEEpOwotICAgICAgICAgICAgICAgIGNh
c2UgVVBQRVJfTEFUSU46Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9VUFBFUl9MQVRJTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBIRUJS
RVc6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9IRUJSRVcpOwotICAgICAgICAgICAgICAgIGNhc2UgQVJNRU5JQU46Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BUk1FTklBTik7
Ci0gICAgICAgICAgICAgICAgY2FzZSBHRU9SR0lBTjoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0dFT1JHSUFOKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIENKS19JREVPR1JBUEhJQzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NKS19JREVPR1JBUEhJQyk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBISVJBR0FOQToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0hJUkFHQU5BKTsKLSAgICAgICAgICAgICAgICBjYXNlIEtB
VEFLQU5BOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfS0FUQUtBTkEpOwotICAgICAgICAgICAgICAgIGNhc2UgSElSQUdBTkFfSVJPSEE6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9ISVJBR0FOQV9JUk9IQSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBLQVRBS0FOQV9JUk9IQToK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0tBVEFLQU5BX0lST0hBKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5saXN0U3R5bGVUeXBlKCkpOwogICAgICAgICBjYXNl
IENTU19QUk9QX01BUkdJTl9UT1A6CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBw
ZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShyZW5kZXJlci0+bWFyZ2luVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5U
b3AoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5t
YXJnaW5Ub3AoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lOX1JJR0hUOgogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3NlZCB0
byByZXR1cm4gdGhlIHBlcmNlbnRhZ2UgaWYgcGVyY2VudGFnZSB3YXMgc3BlY2lmaWVkLgogICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPm1hcmdp
blJpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5SaWdodCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcmdpblJpZ2h0KCkpOwogICAgICAgICBj
YXNlIENTU19QUk9QX01BUkdJTl9CT1RUT006CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpCiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFn
ZSBpZiBwZXJjZW50YWdlIHdhcyBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShyZW5kZXJlci0+bWFyZ2luQm90dG9tKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxl
LT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfTUFSR0lO
X0xFRlQ6CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFN1cHBvc2VkIHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBpZiBwZXJjZW50YWdlIHdhcyBz
cGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShy
ZW5kZXJlci0+bWFyZ2luTGVmdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcmdpbkxlZnQoKSk7
CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX0RJUkVDVElPTjoKLSAgICAg
ICAgICAgIHN3aXRjaCAoc3R5bGUtPm1hcnF1ZWVEaXJlY3Rpb24oKSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgTUZPUldBUkQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9GT1JXQVJEUyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBNQkFD
S1dBUkQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9CQUNLV0FSRFMpOwotICAgICAgICAgICAgICAgIGNhc2UgTUFVVE86Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsK
LSAgICAgICAgICAgICAgICBjYXNlIE1VUDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQKTsKLSAgICAgICAgICAgICAgICBjYXNlIE1E
T1dOOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfRE9XTik7Ci0gICAgICAgICAgICAgICAgY2FzZSBNTEVGVDoKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xFRlQpOwotICAgICAg
ICAgICAgICAgIGNhc2UgTVJJR0hUOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfUklHSFQpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcnF1ZWVEaXJlY3Rpb24o
KSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX0lOQ1JFTUVOVDoKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFycXVlZUluY3JlbWVudCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hcnF1
ZWVJbmNyZW1lbnQoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJRVUVFX1JF
UEVUSVRJT046CiAgICAgICAgICAgICBpZiAoc3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSA8IDAp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0lO
RklOSVRFKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUt
Pm1hcnF1ZWVMb29wQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRV9TVFlMRToKLSAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPm1hcnF1ZWVCZWhhdmlvcigpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBN
Tk9ORToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PTkUpOwotICAgICAgICAgICAgICAgIGNhc2UgTVNDUk9MTDoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NDUk9MTCk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBNU0xJREU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TTElERSk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBNQUxURVJOQVRFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfQUxURVJOQVRFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5tYXJxdWVlQmVoYXZpb3IoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9VU0VSX01PRElGWToKLSAgICAgICAgICAgIHN3
aXRjaCAoc3R5bGUtPnVzZXJNb2RpZnkoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUkVBRF9P
TkxZOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfUkVBRF9PTkxZKTsKLSAgICAgICAgICAgICAgICBjYXNlIFJFQURfV1JJVEU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRUFE
X1dSSVRFKTsKLSAgICAgICAgICAgICAgICBjYXNlIFJFQURfV1JJVEVfUExBSU5URVhUX09OTFk6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9SRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNh
c2UgQ1NTX1BST1BfTUFYX0hFSUdIVDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck1heExl
bmd0aChzdHlsZS0+bWF4SGVpZ2h0KCkpOwotICAgICAgICBjYXNlIENTU19QUk9QX01BWF9XSURU
SDoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvck1heExlbmd0aChzdHlsZS0+bWF4V2lkdGgo
KSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT51c2Vy
TW9kaWZ5KCkpOworICAgICAgICBjYXNlIENTU19QUk9QX01BWF9IRUlHSFQ6IHsKKyAgICAgICAg
ICAgIGNvbnN0IExlbmd0aCYgbWF4SGVpZ2h0ID0gc3R5bGUtPm1heEhlaWdodCgpOworICAgICAg
ICAgICAgaWYgKG1heEhlaWdodC5pc0ZpeGVkKCkgJiYgbWF4SGVpZ2h0LnZhbHVlKCkgPT0gdW5k
ZWZpbmVkTGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9OT05FKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUobWF4SGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX01BWF9XSURU
SDogeworICAgICAgICAgICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0aCA9IHN0eWxlLT5tYXhIZWln
aHQoKTsKKyAgICAgICAgICAgIGlmIChtYXhXaWR0aC5pc0ZpeGVkKCkgJiYgbWF4V2lkdGgudmFs
dWUoKSA9PSB1bmRlZmluZWRMZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShtYXhXaWR0aCk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJP
UF9NSU5fSEVJR0hUOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5t
aW5IZWlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT5taW5IZWlnaHQoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfTUlOX1dJRFRIOgotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1pbldpZHRoKCkpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX09QQUNJVFk6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5vcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9PUlBIQU5TOgpAQCAtMTIzMSwxMTUgKzYy
MCw1MCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAg
IGNhc2UgQ1NTX1BST1BfT1VUTElORV9TVFlMRToKICAgICAgICAgICAgIGlmIChzdHlsZS0+b3V0
bGluZVN0eWxlSXNBdXRvKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yQm9yZGVy
U3R5bGUoc3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoc3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9PVVRMSU5FX1dJRFRIOgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShzdHlsZS0+b3V0bGluZVdpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShtYXgoc3R5bGUtPm92ZXJmbG93WCgpLCBzdHlsZS0+b3ZlcmZsb3dZ
KCkpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9PVkVSRkxPV19YOgotICAgICAgICBjYXNlIENT
U19QUk9QX09WRVJGTE9XX1k6IHsKLSAgICAgICAgICAgIEVPdmVyZmxvdyBvdmVyZmxvdzsKLSAg
ICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NT
X1BST1BfT1ZFUkZMT1dfWDoKLSAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBzdHlsZS0+
b3ZlcmZsb3dYKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTX1BST1BfT1ZFUkZMT1dfWToKLSAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cg
PSBzdHlsZS0+b3ZlcmZsb3dZKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gbWF4KHN0
eWxlLT5vdmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93WSgpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKLSAgICAgICAgICAgICAgICBjYXNlIE9WSVNJ
QkxFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBPSElEREVOOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSElEREVOKTsK
LSAgICAgICAgICAgICAgICBjYXNlIE9TQ1JPTEw6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9TQ1JPTEwpOwotICAgICAgICAgICAgICAg
IGNhc2UgT0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIE9NQVJRVUVFOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfX1dF
QktJVF9NQVJRVUVFKTsKLSAgICAgICAgICAgICAgICBjYXNlIE9PVkVSTEFZOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1ZFUkxBWSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT5vdmVyZmxvd1goKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
T1ZFUkZMT1dfWToKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPm92ZXJmbG93WSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HX1RPUDoKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nVG9wKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wYWRkaW5n
VG9wKCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+
cGFkZGluZ1RvcCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9QQURESU5HX1JJR0hUOgogICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUocmVuZGVyZXItPnBhZGRpbmdSaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+cGFkZGlu
Z1JpZ2h0KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHls
ZS0+cGFkZGluZ1JpZ2h0KCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX1BBRERJTkdfQk9UVE9N
OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUocmVuZGVyZXItPnBhZGRpbmdCb3R0b20oKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUt
PnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT5wYWRkaW5nQm90dG9tKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX1BBRERJ
TkdfTEVGVDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikKICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChz
dHlsZS0+cGFkZGluZ0xlZnQoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN0eWxlLT5wYWRkaW5nTGVmdCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdF
X0JSRUFLX0FGVEVSOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+cGFnZUJyZWFrQWZ0ZXIo
KSkgewotICAgICAgICAgICAgICAgIGNhc2UgUEJBVVRPOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBQQkFMV0FZUzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0FMV0FZUyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBQQkFWT0lE
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfQVZPSUQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3R5bGUtPnBhZ2VCcmVha0FmdGVyKCkpOwogICAgICAgICBjYXNlIENTU19Q
Uk9QX1BBR0VfQlJFQUtfQkVGT1JFOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+cGFnZUJy
ZWFrQmVmb3JlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFBCQVVUTzoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAg
ICAgICAgICAgICAgIGNhc2UgUEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFdBWVMpOwotICAgICAgICAgICAgICAgIGNh
c2UgUEJBVk9JRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX0FWT0lEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNhc2UgQ1NTX1BS
T1BfUEFHRV9CUkVBS19JTlNJREU6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5wYWdlQnJl
YWtJbnNpZGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgUEJBVVRPOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBQQkFWT0lEOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVZPSUQpOwotICAgICAgICAgICAgICAgIGNhc2Ug
UEJBTFdBWVM6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBub3QgYWxsb3dlZAotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPnBhZ2VCcmVha0JlZm9yZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9QQUdFX0JSRUFL
X0lOU0lERTogeworICAgICAgICAgICAgRVBhZ2VCcmVhayBwYWdlQnJlYWsgPSBzdHlsZS0+cGFn
ZUJyZWFrSW5zaWRlKCk7CisgICAgICAgICAgICBBU1NFUlQocGFnZUJyZWFrICE9IFBCQUxXQVlT
KTsKKyAgICAgICAgICAgIGlmIChwYWdlQnJlYWsgPT0gUEJBTFdBWVMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT5wYWdlQnJlYWtJbnNpZGUoKSk7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJP
UF9QT1NJVElPTjoKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnBvc2l0aW9uKCkpIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIFN0YXRpY1Bvc2l0aW9uOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RBVElDKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFJlbGF0aXZlUG9zaXRpb246Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9SRUxBVElWRSk7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBBYnNvbHV0ZVBvc2l0aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQUJTT0xVVEUpOwotICAgICAgICAgICAgICAgIGNhc2Ug
Rml4ZWRQb3NpdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0ZJWEVEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9SSUdIVDoKICAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZh
bHVlKHN0eWxlLCBDU1NfUFJPUF9SSUdIVCk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVEFCTEVf
TEFZT1VUOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+dGFibGVMYXlvdXQoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgVEFVVE86Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRG
SVhFRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0ZJWEVEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT50YWJsZUxheW91dCgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9URVhUX0FMSUdOOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yVGV4dEFsaWduKHN0
eWxlLT50ZXh0QWxpZ24oKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHN0eWxlLT50ZXh0QWxpZ24oKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9ERUNP
UkFUSU9OOiB7CiAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwogICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVU5ERVJMSU5FKQpAQCAtMTM4OSwyMiArNzEzLDExIEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX1RFWFRfRklMTF9DT0xPUjoKICAgICAgICAgICAgIHJldHVybiBjdXJy
ZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUsIHN0eWxlLT50ZXh0RmlsbENvbG9yKCkpOwogICAg
ICAgICBjYXNlIENTU19QUk9QX1RFWFRfSU5ERU5UOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dGV4dEluZGVudCgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9URVhUX1NIQURPVzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRvdyhzdHls
ZS0+dGV4dFNoYWRvdygpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU0VD
VVJJVFk6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT50ZXh0U2VjdXJpdHkoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgVFNOT05FOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7Ci0gICAgICAgICAgICAgICAgY2FzZSBU
U0RJU0M6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9ESVNDKTsKLSAgICAgICAgICAgICAgICBjYXNlIFRTQ0lSQ0xFOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ0lSQ0xFKTsK
LSAgICAgICAgICAgICAgICBjYXNlIFRTU1FVQVJFOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1FVQVJFKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT50ZXh0U2Vj
dXJpdHkoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NJWkVfQURKVVNU
OgogICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKQEAgLTE0MTQs
MzEgKzcyNywxMSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAg
ICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9URVhUX1NUUk9LRV9XSURUSDoKICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRleHRTdHJva2VXaWR0aCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTX1BST1Bf
VEVYVF9UUkFOU0ZPUk06Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT50ZXh0VHJhbnNmb3Jt
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENBUElUQUxJWkU6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DQVBJVEFMSVpFKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VQUEVSQ0FTRSk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBMT1dFUkNBU0U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9MT1dFUkNBU0UpOwotICAgICAgICAgICAgICAgIGNhc2UgVFRO
T05FOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfTk9ORSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdHlsZS0+dGV4dFRyYW5zZm9ybSgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9UT1A6CiAgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHls
ZSwgQ1NTX1BST1BfVE9QKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9VTklDT0RFX0JJREk6Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT51bmljb2RlQmlkaSgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBVQk5vcm1hbDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBFbWJlZDoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0VNQkVEKTsKLSAgICAgICAgICAgICAgICBjYXNlIE92ZXJyaWRlOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQklESV9PVkVSUklERSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+dW5pY29kZUJpZGkoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVkVSVElDQUxf
QUxJR046CiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKICAg
ICAgICAgICAgICAgICBjYXNlIEJBU0VMSU5FOgpAQCAtMTQ2MCwxMDQgKzc1MywzNCBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICAgICAgY2Fz
ZSBCQVNFTElORV9NSURETEU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VCS0lUX0JBU0VMSU5FX01JRERMRSk7CiAgICAgICAgICAg
ICAgICAgY2FzZSBMRU5HVEg6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxl
bmd0aChzdHlsZS0+dmVydGljYWxBbGlnbkxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dmVydGljYWxBbGlnbkxlbmd0aCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfVklTSUJJTElUWToKLSAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPnZpc2liaWxpdHkoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgVklTSUJMRToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX1ZJU0lCTEUpOwotICAgICAgICAgICAgICAgIGNhc2UgSElEREVOOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
SElEREVOKTsKLSAgICAgICAgICAgICAgICBjYXNlIENPTExBUFNFOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQ09MTEFQU0UpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5
bGUtPnZpc2liaWxpdHkoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfV0hJVEVfU1BBQ0U6Ci0g
ICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT53aGl0ZVNwYWNlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIE5PUk1BTDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBQUkU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QUkUp
OwotICAgICAgICAgICAgICAgIGNhc2UgUFJFX1dSQVA6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9QUkVfV1JBUCk7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBQUkVfTElORToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX1BSRV9MSU5FKTsKLSAgICAgICAgICAgICAgICBjYXNlIE5P
V1JBUDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX05PV1JBUCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBLSFRNTF9OT1dSQVA6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9fV0VC
S0lUX05PV1JBUCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShzdHlsZS0+d2hpdGVTcGFjZSgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJP
UF9XSURPV1M6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxl
LT53aWRvd3MoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNl
IENTU19QUk9QX1dJRFRIOgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc2l6aW5nQm94KHJlbmRlcmVyKS53aWR0
aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZUZvckxlbmd0aChzdHlsZS0+d2lkdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT53aWR0aCgpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9XT1JE
X0JSRUFLOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+d29yZEJyZWFrKCkpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIE5vcm1hbFdvcmRCcmVhazoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBCcmVha0FsbFdvcmRCcmVhazoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JSRUFLX0FMTCk7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBCcmVha1dvcmRCcmVhazoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZShDU1NfVkFMX0JSRUFLX1dPUkQpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+d29yZEJyZWFrKCkpOwog
ICAgICAgICBjYXNlIENTU19QUk9QX1dPUkRfU1BBQ0lORzoKICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPndvcmRTcGFjaW5nKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpOwogICAgICAgICBjYXNlIENTU19QUk9QX1dPUkRfV1JBUDoKLSAgICAgICAg
ICAgIHN3aXRjaCAoc3R5bGUtPndvcmRXcmFwKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5v
cm1hbFdvcmRXcmFwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAgICAgICAgICAgICBjYXNlIEJyZWFrV29yZFdy
YXA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9CUkVBS19XT1JEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT53b3JkV3JhcCgpKTsKICAgICAgICAgY2FzZSBDU1Nf
UFJPUF9fV0VCS0lUX0xJTkVfQlJFQUs6Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5raHRt
bExpbmVCcmVhaygpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBMQk5PUk1BTDoKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PUk1BTCk7
Ci0gICAgICAgICAgICAgICAgY2FzZSBBRlRFUl9XSElURV9TUEFDRToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FGVEVSX1dISVRFX1NQ
QUNFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN0eWxlLT5raHRtbExpbmVCcmVhaygpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9f
V0VCS0lUX05CU1BfTU9ERToKLSAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUtPm5ic3BNb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIE5CTk9STUFMOgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAgICAgICAg
ICAgICBjYXNlIFNQQUNFOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKENTU19WQUxfU1BBQ0UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm5ic3BNb2RlKCkpOwogICAgICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfTUFUQ0hfTkVBUkVTVF9NQUlMX0JMT0NLUVVPVEVfQ09MT1I6
Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLT5tYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNv
bG9yKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEJDTk9STUFMOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9STUFMKTsKLSAgICAg
ICAgICAgICAgICBjYXNlIE1BVENIOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTUFUQ0gpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPm1hdGNoTmVhcmVzdE1haWxC
bG9ja3F1b3RlQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfUkVTSVpFOgotICAgICAg
ICAgICAgc3dpdGNoIChzdHlsZS0+cmVzaXplKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFJF
U0laRV9CT1RIOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfQk9USCk7Ci0gICAgICAgICAgICAgICAgY2FzZSBSRVNJWkVfSE9SSVpPTlRB
TDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1Nf
VkFMX0hPUklaT05UQUwpOwotICAgICAgICAgICAgICAgIGNhc2UgUkVTSVpFX1ZFUlRJQ0FMOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
VkVSVElDQUwpOwotICAgICAgICAgICAgICAgIGNhc2UgUkVTSVpFX05PTkU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0
eWxlLT5yZXNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfWl9JTkRFWDoKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+aGFzQXV0b1pJbmRleCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKQEAgLTE1OTcsMzYgKzgyMCwyMiBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGZpcnN0UmVnaW9uLnJlbGVhc2UoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0FQUEVBUkFOQ0U6Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWVGb3JBcHBlYXJhbmNlKHN0eWxlLT5hcHBlYXJhbmNlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+YXBwZWFyYW5jZSgp
KTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0ZPTlRfU0laRV9ERUxUQToKICAgICAg
ICAgICAgIC8vIE5vdCBhIHJlYWwgc3R5bGUgcHJvcGVydHkgLS0gdXNlZCBieSB0aGUgZWRpdGlu
ZyBlbmdpbmUgLS0gc28gaGFzIG5vIGNvbXB1dGVkIHZhbHVlLgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9NQVJHSU5fQk9UVE9NX0NPTExBUFNFOgot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yTWFyZ2luQ29sbGFwc2Uoc3R5bGUtPm1hcmdpbkJv
dHRvbUNvbGxhcHNlKCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdHlsZS0+bWFyZ2luQm90dG9tQ29sbGFwc2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1Bf
X1dFQktJVF9NQVJHSU5fVE9QX0NPTExBUFNFOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
TWFyZ2luQ29sbGFwc2Uoc3R5bGUtPm1hcmdpblRvcENvbGxhcHNlKCkpOworICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+bWFyZ2luVG9wQ29sbGFwc2UoKSk7
CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9SVExfT1JERVJJTkc6CiAgICAgICAgICAg
ICBpZiAoc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNVQUwpOwogICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0xPR0lDQUwpOwogICAgICAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfVVNFUl9EUkFHOgotICAgICAgICAgICAgc3dpdGNoIChzdHlsZS0+dXNl
ckRyYWcoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgRFJBR19BVVRPOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBEUkFHX05PTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT05FKTsKLSAgICAgICAgICAgICAgICBjYXNl
IERSQUdfRUxFTUVOVDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0VMRU1FTlQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0eWxlLT51c2Vy
RHJhZygpKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1VTRVJfU0VMRUNUOgotICAg
ICAgICAgICAgc3dpdGNoIChzdHlsZS0+dXNlclNlbGVjdCgpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTRUxFQ1RfTk9ORToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgICAgIGNhc2UgU0VMRUNUX1RF
WFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9URVhUKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dXNlclNlbGVjdCgpKTsKICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JPUkRFUl9CT1RUT01fTEVGVF9SQURJVVM6CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKSk7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1JE
RVJfQk9UVE9NX1JJR0hUX1JBRElVUzoKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJ
KHJldmlzaW9uIDI2NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzEsMzMgKzEzMSw2MyBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoY29uCiAgICAgICAgIG1fdmFsdWUuc3RyaW5nLT5yZWYoKTsKIH0KIAot
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8Q291bnRlcj4g
YykKLSAgICA6IG1fdHlwZShDU1NfQ09VTlRFUikKK0NTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShSR0JBMzIgY29sb3IpCisgICAgOiBtX3R5cGUoQ1NTX1JHQkNPTE9SKQogewot
ICAgIG1fdmFsdWUuY291bnRlciA9IGMucmVsZWFzZVJlZigpOworICAgIG1fdmFsdWUucmdiY29s
b3IgPSBjb2xvcjsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBh
c3NSZWZQdHI8UmVjdD4gcikKLSAgICA6IG1fdHlwZShDU1NfUkVDVCkKK0NTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKIHsKLSAgICBtX3Zh
bHVlLnJlY3QgPSByLnJlbGVhc2VSZWYoKTsKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBBdXRvOgorICAgICAgICAgICAgbV90eXBlID0gQ1NTX0lERU5UOworICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYkNvcmU6OkZpeGVkOgorICAgICAgICAgICAgbV90eXBlID0gQ1NT
X1BYOworICAgICAgICAgICAgbV92YWx1ZS5udW0gPSBsZW5ndGgudmFsdWUoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEludHJpbnNpYzoKKyAgICAgICAgICAgIG1fdHlwZSA9
IENTU19JREVOVDsKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0lOVFJJTlNJ
QzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAgICAg
ICAgICAgIG1fdHlwZSA9IENTU19JREVOVDsKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX01JTl9JTlRSSU5TSUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
ZXJjZW50OgorICAgICAgICAgICAgbV90eXBlID0gQ1NTX1BFUkNFTlRBR0U7CisgICAgICAgICAg
ICBtX3ZhbHVlLm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBSZWxhdGl2ZToKKyAgICAgICAgY2FzZSBTdGF0aWM6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8RGFzaGJvYXJkUmVn
aW9uPiByKQotICAgIDogbV90eXBlKENTU19EQVNIQk9BUkRfUkVHSU9OKQordm9pZCBDU1NQcmlt
aXRpdmVWYWx1ZTo6aW5pdChQYXNzUmVmUHRyPENvdW50ZXI+IGMpCiB7Ci0gICAgbV92YWx1ZS5y
ZWdpb24gPSByLnJlbGVhc2VSZWYoKTsKKyAgICBtX3R5cGUgPSBDU1NfQ09VTlRFUjsKKyAgICBt
X3ZhbHVlLmNvdW50ZXIgPSBjLnJlbGVhc2VSZWYoKTsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKFJHQkEzMiBjb2xvcikKLSAgICA6IG1fdHlwZShDU1NfUkdCQ09M
T1IpCit2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjppbml0KFBhc3NSZWZQdHI8UmVjdD4gcikKIHsK
LSAgICBtX3ZhbHVlLnJnYmNvbG9yID0gY29sb3I7CisgICAgbV90eXBlID0gQ1NTX1JFQ1Q7Cisg
ICAgbV92YWx1ZS5yZWN0ID0gci5yZWxlYXNlUmVmKCk7Cit9CisKK3ZvaWQgQ1NTUHJpbWl0aXZl
VmFsdWU6OmluaXQoUGFzc1JlZlB0cjxEYXNoYm9hcmRSZWdpb24+IHIpCit7CisgICAgbV90eXBl
ID0gQ1NTX0RBU0hCT0FSRF9SRUdJT047CisgICAgbV92YWx1ZS5yZWdpb24gPSByLnJlbGVhc2VS
ZWYoKTsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQ
dHI8UGFpcj4gcCkKLSAgICA6IG1fdHlwZShDU1NfUEFJUikKK3ZvaWQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmluaXQoUGFzc1JlZlB0cjxQYWlyPiBwKQogeworICAgIG1fdHlwZSA9IENTU19QQUlSOwog
ICAgIG1fdmFsdWUucGFpciA9IHAucmVsZWFzZVJlZigpOwogfQogCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgJKHJldmlzaW9uIDI2NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqCiAgKiAoQykgMTk5OS0y
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4
ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
MCw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ291bnRlcjsKIGNsYXNz
IERhc2hib2FyZFJlZ2lvbjsKK3N0cnVjdCBMZW5ndGg7CiBjbGFzcyBQYWlyOwogY2xhc3MgUmVj
dDsKIGNsYXNzIFJlbmRlclN0eWxlOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKICAgICBD
U1NQcmltaXRpdmVWYWx1ZShpbnQgaWRlbnQpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKGRvdWJs
ZSwgVW5pdFR5cGVzKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTdHJpbmcmLCBVbml0
VHlwZXMpOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8Q291bnRlcj4pOwotICAg
IENTU1ByaW1pdGl2ZVZhbHVlKFBhc3NSZWZQdHI8UmVjdD4pOwogICAgIENTU1ByaW1pdGl2ZVZh
bHVlKHVuc2lnbmVkIGNvbG9yKTsgLy8gUkdCIHZhbHVlCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUo
UGFzc1JlZlB0cjxQYWlyPik7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUoUGFzc1JlZlB0cjxEYXNo
Ym9hcmRSZWdpb24+KTsgLy8gRklYTUU6IFdoeSBpcyBkYXNoYm9hcmQgcmVnaW9uIGEgcHJpbWl0
aXZlIHZhbHVlPyBUaGlzIG1ha2VzIG5vIHNlbnNlLgorICAgIENTU1ByaW1pdGl2ZVZhbHVlKGNv
bnN0IExlbmd0aCYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVl
KFQpOyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVlKFQqIHZhbCkgeyBpbml0KFBhc3NSZWZQ
dHI8VD4odmFsKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1
ZShQYXNzUmVmUHRyPFQ+IHZhbCkgeyBpbml0KHZhbCk7IH0KIAogICAgIHZpcnR1YWwgfkNTU1By
aW1pdGl2ZVZhbHVlKCk7CiAKQEAgLTEzMyw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBzaG9ydCBjc3NWYWx1ZVR5cGUoKSBjb25zdDsKIAogICAgIGludCBnZXRJZGVu
dCgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFQoKSBjb25zdDsgLy8gRGVm
aW5lZCBpbiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKIAogICAgIHZpcnR1YWwgYm9vbCBw
YXJzZVN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sID0gZmFsc2UpOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGNzc1RleHQoKSBjb25zdDsKQEAgLTE1MSw2ICsxNTQsMTQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBQYWlyKiBwYWlyOwogICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbjsKICAgICB9
IG1fdmFsdWU7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gb3BlcmF0b3Ig
VCooKTsgLy8gY29tcGlsZS10aW1lIGd1YXJkCisKKyAgICB2b2lkIGluaXQoUGFzc1JlZlB0cjxD
b3VudGVyPik7CisgICAgdm9pZCBpbml0KFBhc3NSZWZQdHI8UmVjdD4pOworICAgIHZvaWQgaW5p
dChQYXNzUmVmUHRyPFBhaXI+KTsKKyAgICB2b2lkIGluaXQoUGFzc1JlZlB0cjxEYXNoYm9hcmRS
ZWdpb24+KTsgLy8gRklYTUU6IFdoeSBpcyBkYXNoYm9hcmQgcmVnaW9uIGEgcHJpbWl0aXZlIHZh
bHVlPyBUaGlzIG1ha2VzIG5vIHNlbnNlLgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9z
a3VyeWFrb3YgPGFwQG55cG9wLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
T1IKKyAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuCisgKiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisg
KiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5nc19oCisjZGVmaW5lIENTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3NfaAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoRUJvcmRlclN0eWxlIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQor
eworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIEJOT05FOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEJISURERU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ISURERU47
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTlNFVDoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX0lOU0VUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR1JPT1ZFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfR1JPT1ZF
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUklER0U6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SSURHRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE9VVFNFVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX09VVFNF
VDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPVFRFRDoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0RPVFRFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERBU0hFRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0RB
U0hFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNPTElEOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU09MSUQ7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBET1VCTEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9E
T1VCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm9yZGVyU3R5bGUoKSBjb25zdAoreworICAg
IHJldHVybiAoRUJvcmRlclN0eWxlKShtX3ZhbHVlLmlkZW50IC0gQ1NTX1ZBTF9OT05FKTsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KENvbXBvc2l0ZU9wZXJhdG9yIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3
aXRjaCAoZSkgeworICAgICAgICBjYXNlIENvbXBvc2l0ZUNsZWFyOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfQ0xFQVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDb21wb3NpdGVDb3B5OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
Q09QWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU92
ZXI6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TT1VSQ0VfT1ZFUjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU09VUkNFX0lOOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3V0OgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfU09VUkNFX09VVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9TT1VSQ0VfQVRPUDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENv
bXBvc2l0ZURlc3RpbmF0aW9uT3ZlcjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX0RFU1RJTkFUSU9OX09WRVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
b21wb3NpdGVEZXN0aW5hdGlvbkluOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfREVTVElOQVRJT05fSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21w
b3NpdGVEZXN0aW5hdGlvbk91dDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X0RFU1RJTkFUSU9OX09VVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbXBv
c2l0ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X0RFU1RJTkFUSU9OX0FUT1A7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21w
b3NpdGVYT1I6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9YT1I7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2VyOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUExVU19EQVJLRVI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDb21wb3NpdGVIaWdobGlnaHQ6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9ISUdITElHSFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDb21wb3NpdGVQbHVzTGlnaHRlcjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX1BMVVNfTElHSFRFUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbXBvc2l0ZU9w
ZXJhdG9yKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX0NMRUFSOgorICAgICAgICAgICAgcmV0dXJuIENvbXBvc2l0ZUNsZWFyOwor
ICAgICAgICBjYXNlIENTU19WQUxfQ09QWToKKyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVD
b3B5OworICAgICAgICBjYXNlIENTU19WQUxfU09VUkNFX09WRVI6CisgICAgICAgICAgICByZXR1
cm4gQ29tcG9zaXRlU291cmNlT3ZlcjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NPVVJDRV9JTjoK
KyAgICAgICAgICAgIHJldHVybiBDb21wb3NpdGVTb3VyY2VJbjsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX1NPVVJDRV9PVVQ6CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlU291cmNlT3V0Owor
ICAgICAgICBjYXNlIENTU19WQUxfU09VUkNFX0FUT1A6CisgICAgICAgICAgICByZXR1cm4gQ29t
cG9zaXRlU291cmNlQXRvcDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0RFU1RJTkFUSU9OX09WRVI6
CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyOworICAgICAgICBj
YXNlIENTU19WQUxfREVTVElOQVRJT05fSU46CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRl
RGVzdGluYXRpb25JbjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0RFU1RJTkFUSU9OX09VVDoKKyAg
ICAgICAgICAgIHJldHVybiBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX0RFU1RJTkFUSU9OX0FUT1A6CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlRGVz
dGluYXRpb25BdG9wOworICAgICAgICBjYXNlIENTU19WQUxfWE9SOgorICAgICAgICAgICAgcmV0
dXJuIENvbXBvc2l0ZVhPUjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1BMVVNfREFSS0VSOgorICAg
ICAgICAgICAgcmV0dXJuIENvbXBvc2l0ZVBsdXNEYXJrZXI7CisgICAgICAgIGNhc2UgQ1NTX1ZB
TF9ISUdITElHSFQ6CisgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlSGlnaGxpZ2h0OworICAg
ICAgICBjYXNlIENTU19WQUxfUExVU19MSUdIVEVSOgorICAgICAgICAgICAgcmV0dXJuIENvbXBv
c2l0ZVBsdXNMaWdodGVyOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gQ29tcG9zaXRlQ2xlYXI7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQXBwZWFyYW5jZSBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBOb0FwcGVhcmFuY2U6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tib3hBcHBlYXJhbmNlOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfQ0hFQ0tCT1g7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSYWRpb0FwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9SQURJTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1c2hCdXR0b25B
cHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUFVTSF9CVVRU
T047CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25BcHBlYXJh
bmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1FVQVJFX0JVVFRPTjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJ1dHRvbkFwcGVhcmFuY2U6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9CVVRUT047CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBCdXR0b25CZXZlbEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9CVVRUT05fQkVWRUw7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMaXN0Ym94QXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX0xJU1RCT1g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaXN0
SXRlbUFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MSVNU
SVRFTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbnVsaXN0QXBwZWFyYW5j
ZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01FTlVMSVNUOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVudWxpc3RCdXR0b25BcHBlYXJhbmNlOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUVOVUxJU1RfQlVUVE9OOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVudWxpc3RUZXh0QXBwZWFyYW5jZToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01FTlVMSVNUX1RFWFQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNZW51bGlzdFRleHRGaWVsZEFwcGVhcmFuY2U6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9NRU5VTElTVF9URVhURklFTEQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25VcEFwcGVhcmFuY2U6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TQ1JPTExCQVJCVVRUT05fVVA7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY3JvbGxiYXJCdXR0b25Eb3duQXBw
ZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUkJV
VFRPTl9ET1dOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyQnV0
dG9uTGVmdEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9T
Q1JPTExCQVJCVVRUT05fTEVGVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNj
cm9sbGJhckJ1dHRvblJpZ2h0QXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX1NDUk9MTEJBUkJVVFRPTl9SSUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNjcm9sbGJhclRyYWNrSG9yaXpvbnRhbEFwcGVhcmFuY2U6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TQ1JPTExCQVJUUkFDS19IT1JJWk9OVEFMOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Nyb2xsYmFyVHJhY2tWZXJ0aWNhbEFwcGVh
cmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TQ1JPTExCQVJUUkFD
S19WRVJUSUNBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGJhclRo
dW1iSG9yaXpvbnRhbEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9TQ1JPTExCQVJUSFVNQl9IT1JJWk9OVEFMOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU2Nyb2xsYmFyVGh1bWJWZXJ0aWNhbEFwcGVhcmFuY2U6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TQ1JPTExCQVJUSFVNQl9WRVJUSUNBTDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGJhckdyaXBwZXJIb3Jpem9udGFsQXBwZWFy
YW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NDUk9MTEJBUkdSSVBQ
RVJfSE9SSVpPTlRBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGJh
ckdyaXBwZXJWZXJ0aWNhbEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9TQ1JPTExCQVJHUklQUEVSX1ZFUlRJQ0FMOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU2xpZGVySG9yaXpvbnRhbEFwcGVhcmFuY2U6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9TTElERVJfSE9SSVpPTlRBTDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNsaWRlclZlcnRpY2FsQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NMSURFUl9WRVJUSUNBTDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNsaWRlclRodW1iSG9yaXpvbnRhbEFwcGVhcmFuY2U6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TTElERVJUSFVNQl9IT1JJWk9OVEFMOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2xpZGVyVGh1bWJWZXJ0aWNhbEFwcGVhcmFu
Y2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TTElERVJUSFVNQl9WRVJU
SUNBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhcmV0QXBwZWFyYW5jZToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NBUkVUOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU2VhcmNoRmllbGRBcHBlYXJhbmNlOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0VBUkNIRklFTEQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTZWFyY2hGaWVsZERlY29yYXRpb25BcHBlYXJhbmNlOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0VBUkNIRklFTERfREVDT1JBVElPTjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25B
cHBlYXJhbmNlOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0VBUkNIRklF
TERfUkVTVUxUU19ERUNPUkFUSU9OOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uQXBwZWFyYW5jZToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX1NFQVJDSEZJRUxEX1JFU1VMVFNfQlVUVE9OOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25BcHBlYXJhbmNlOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0VBUkNIRklFTERfQ0FOQ0VMX0JV
VFRPTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRleHRGaWVsZEFwcGVhcmFu
Y2U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9URVhURklFTEQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZXh0QXJlYUFwcGVhcmFuY2U6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9URVhUQVJFQTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEVBcHBlYXJhbmNlKCkgY29uc3QKK3sKKyAgICBpZiAobV92YWx1ZS5pZGVudCA9PSBDU1Nf
VkFMX05PTkUpCisgICAgICAgIHJldHVybiBOb0FwcGVhcmFuY2U7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gRUFwcGVhcmFuY2UobV92YWx1ZS5pZGVudCAtIENTU19WQUxfQ0hFQ0tCT1ggKyAx
KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEVCYWNrZ3JvdW5kQm94IGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAg
IHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIEJHQk9SREVSOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfQk9SREVSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQkdQQURESU5HOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUEFERElO
RzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJHQ09OVEVOVDoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NPTlRFTlQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFQmFja2dyb3VuZEJveCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CT1JERVI6CisgICAgICAgICAgICByZXR1cm4gQkdCT1JE
RVI7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9QQURESU5HOgorICAgICAgICAgICAgcmV0dXJuIEJH
UEFERElORzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0NPTlRFTlQ6CisgICAgICAgICAgICByZXR1
cm4gQkdDT05URU5UOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQkdCT1JERVI7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShFQmFja2dyb3VuZFJlcGVhdCBlKQorICAgIDogbV90eXBlKENTU19J
REVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBSRVBFQVQ6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SRVBFQVQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSRVBFQVRfWDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX1JFUEVBVF9YOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVQRUFUX1k6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SRVBFQVRfWTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE5PX1JFUEVBVDoKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX05PX1JFUEVBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCYWNrZ3Jv
dW5kUmVwZWF0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX1JFUEVBVDoKKyAgICAgICAgICAgIHJldHVybiBSRVBFQVQ7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9SRVBFQVRfWDoKKyAgICAgICAgICAgIHJldHVybiBSRVBFQVRfWDsK
KyAgICAgICAgY2FzZSBDU1NfVkFMX1JFUEVBVF9ZOgorICAgICAgICAgICAgcmV0dXJuIFJFUEVB
VF9ZOworICAgICAgICBjYXNlIENTU19WQUxfTk9fUkVQRUFUOgorICAgICAgICAgICAgcmV0dXJu
IE5PX1JFUEVBVDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFJFUEVBVDsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEVCb3hBbGlnbm1lbnQgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7
CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQlNUUkVUQ0g6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TVFJFVENIOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQlNUQVJUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1RB
UlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCQ0VOVEVSOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ0VOVEVSOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQkVORDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0VO
RDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJCQVNFTElORToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JBU0VMSU5FOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQkpVU1RJRlk6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9KVVNUSUZZOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveEFsaWdubWVudCgpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9T
VFJFVENIOgorICAgICAgICAgICAgcmV0dXJuIEJTVFJFVENIOworICAgICAgICBjYXNlIENTU19W
QUxfU1RBUlQ6CisgICAgICAgICAgICByZXR1cm4gQlNUQVJUOworICAgICAgICBjYXNlIENTU19W
QUxfRU5EOgorICAgICAgICAgICAgcmV0dXJuIEJFTkQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9D
RU5URVI6CisgICAgICAgICAgICByZXR1cm4gQkNFTlRFUjsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0JBU0VMSU5FOgorICAgICAgICAgICAgcmV0dXJuIEJCQVNFTElORTsKKyAgICAgICAgY2FzZSBD
U1NfVkFMX0pVU1RJRlk6CisgICAgICAgICAgICByZXR1cm4gQkpVU1RJRlk7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCU1RSRVRDSDsKK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCb3hEaXJl
Y3Rpb24gZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7Cisg
ICAgICAgIGNhc2UgQk5PUk1BTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X05PUk1BTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJSRVZFUlNFOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUkVWRVJTRTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVCb3hEaXJlY3Rpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVu
dCkgeworICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgorICAgICAgICAgICAgcmV0dXJuIEJO
T1JNQUw7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9SRVZFUlNFOgorICAgICAgICAgICAgcmV0dXJu
IEJSRVZFUlNFOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
Qk5PUk1BTDsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEVCb3hMaW5lcyBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAg
ICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBTSU5HTEU6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9TSU5HTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNVUxUSVBMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01VTFRJUExF
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveExpbmVzKCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NJTkdMRToKKyAgICAgICAg
ICAgIHJldHVybiBTSU5HTEU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9NVUxUSVBMRToKKyAgICAg
ICAgICAgIHJldHVybiBNVUxUSVBMRTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFNJTkdMRTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCb3hPcmllbnQgZSkKKyAgICA6IG1fdHlwZShDU1Nf
SURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgSE9SSVpPTlRBTDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hPUklaT05UQUw7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBWRVJUSUNBTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1ZFUlRJQ0FMOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJveE9yaWVudCgp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9IT1JJWk9OVEFMOgorICAgICAgICBjYXNlIENTU19WQUxfSU5MSU5FX0FYSVM6CisgICAg
ICAgICAgICByZXR1cm4gSE9SSVpPTlRBTDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1ZFUlRJQ0FM
OgorICAgICAgICAgICAgcmV0dXJuIFZFUlRJQ0FMOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gSE9SSVpPTlRBTDsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDYXB0aW9uU2lkZSBlKQorICAg
IDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBD
QVBMRUZUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTEVGVDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENBUFJJR0hUOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfUklHSFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDQVBUT1A6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9UT1A7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQVBCT1RUT006CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9CT1RUT007CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ2FwdGlv
blNpZGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBj
YXNlIENTU19WQUxfTEVGVDoKKyAgICAgICAgICAgIHJldHVybiBDQVBMRUZUOworICAgICAgICBj
YXNlIENTU19WQUxfUklHSFQ6CisgICAgICAgICAgICByZXR1cm4gQ0FQUklHSFQ7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9UT1A6CisgICAgICAgICAgICByZXR1cm4gQ0FQVE9QOworICAgICAgICBj
YXNlIENTU19WQUxfQk9UVE9NOgorICAgICAgICAgICAgcmV0dXJuIENBUEJPVFRPTTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENBUFRPUDsKK30KKwordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDbGVh
ciBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAg
ICAgY2FzZSBDTk9ORToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDTEVGVDoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xFRlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDUklHSFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SSUdIVDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENCT1RIOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfQk9USDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDbGVhcigp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIENOT05FOworICAgICAgICBjYXNlIENTU19W
QUxfTEVGVDoKKyAgICAgICAgICAgIHJldHVybiBDTEVGVDsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X1JJR0hUOgorICAgICAgICAgICAgcmV0dXJuIENSSUdIVDsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X0JPVEg6CisgICAgICAgICAgICByZXR1cm4gQ0JPVEg7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBDTk9ORTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDdXJzb3IgZSkKKyAgICA6IG1fdHlw
ZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQ1VSU09SX0FV
VE86CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BVVRPOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfQ1JPU1NIQUlSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1VSU09SX0RFRkFVTFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9ERUZBVUxUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX1BPSU5U
RVI6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9QT0lOVEVSOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX01PVkU6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9NT1ZFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1VSU09SX0NFTEw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DRUxM
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX1ZFUlRJQ0FMX1RFWFQ6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9WRVJUSUNBTF9URVhUOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0NPTlRFWFRfTUVOVToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NPTlRFWFRfTUVOVTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9BTElBUzoKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0FMSUFTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1VSU09SX0NPUFk6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DT1BZOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX05PTkU6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfUFJPR1JFU1M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1Jf
Tk9fRFJPUDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PX0RST1A7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfTk9UX0FMTE9XRUQ6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT1RfQUxMT1dFRDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRfWk9PTV9JTjoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX19XRUJLSVRfWk9PTV9JTjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRfWk9PTV9PVVQ6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9fV0VCS0lUX1pPT01fT1VUOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfRV9SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDVVJTT1JfTkVfUkVTSVpFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
TkVfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX05XX1JF
U0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05XX1JFU0laRTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05fUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1VSU09SX1NFX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1NFX1JFU0laRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENVUlNPUl9TV19SRVNJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9T
V19SRVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJ
WkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TX1JFU0laRTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1dfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1VSU09SX0VXX1JFU0laRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX0VXX1JFU0laRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENV
UlNPUl9OU19SRVNJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OU19S
RVNJWkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfTkVTV19SRVNJ
WkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ORVNXX1JFU0laRTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENVUlNPUl9OV1NFX1JFU0laRToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05XU0VfUkVTSVpFOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6CisgICAgICAgICAgICBtX3Zh
bHVlLmlkZW50ID0gQ1NTX1ZBTF9DT0xfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9ST1dfUkVTSVpFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VS
U09SX1RFWFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9URVhUOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9XQUlUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1VSU09SX0hFTFA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9I
RUxQOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1VSU09SX0FMTF9TQ1JPTEw6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BTExfU0NST0xMOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRUN1cnNvcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsdWUuaWRlbnQg
PT0gQ1NTX1ZBTF9DT1BZKQorICAgICAgICByZXR1cm4gQ1VSU09SX0NPUFk7CisgICAgZWxzZSBp
ZiAobV92YWx1ZS5pZGVudCA9PSBDU1NfVkFMX05PTkUpCisgICAgICAgIHJldHVybiBDVVJTT1Jf
Tk9ORTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAoRUN1cnNvcikobV92YWx1ZS5pZGVudCAt
IENTU19WQUxfQVVUTyk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShFRGlzcGxheSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkK
K3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBJTkxJTkU6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9JTkxJTkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBCTE9DSzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JMT0NL
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTElTVF9JVEVNOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTElTVF9JVEVNOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUlVOX0lOOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfUlVOX0lOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUEFDVDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NPTVBBQ1Q7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJTkxJTkVfQkxPQ0s6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9JTkxJTkVfQkxPQ0s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBUQUJMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RBQkxFOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSU5MSU5FX1RBQkxFOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSU5MSU5FX1RBQkxFOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfVEFCTEVfUk9XX0dST1VQOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfVEFCTEVfSEVBREVSX0dST1VQOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfVEFCTEVfRk9PVEVSX0dST1VQOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVEFCTEVfUk9XOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEFCTEVf
Uk9XOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQ
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEFCTEVfQ09MVU1OX0dST1VQ
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEFCTEVfQ09MVU1OOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVEFCTEVfQ0VMTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1RBQkxFX0NFTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBUQUJMRV9DQVBUSU9OOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEFC
TEVfQ0FQVElPTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPWDoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX19XRUJLSVRfQk9YOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX19XRUJLSVRfSU5MSU5FX0JPWDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE5PTkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05F
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRURpc3BsYXkoKSBjb25zdAoreworICAgIGlmIChtX3Zh
bHVlLmlkZW50ID09IENTU19WQUxfTk9ORSkKKyAgICAgICAgcmV0dXJuIE5PTkU7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gRURpc3BsYXkobV92YWx1ZS5pZGVudCAtIENTU19WQUxfSU5MSU5F
KTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEVFbXB0eUNlbGwgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dp
dGNoIChlKSB7CisgICAgICAgIGNhc2UgU0hPVzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NfVkFMX1NIT1c7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBISURFOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSElERTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVFbXB0eUNlbGwoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkg
eworICAgICAgICBjYXNlIENTU19WQUxfU0hPVzoKKyAgICAgICAgICAgIHJldHVybiBTSE9XOwor
ICAgICAgICBjYXNlIENTU19WQUxfSElERToKKyAgICAgICAgICAgIHJldHVybiBISURFOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU0hPVzsKK30KKwordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVGbG9h
dCBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAg
ICAgY2FzZSBGTk9ORToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGTEVGVDoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xFRlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGUklHSFQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SSUdIVDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVGbG9hdCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3Zh
bHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgorICAgICAgICAgICAgcmV0
dXJuIEZMRUZUOworICAgICAgICBjYXNlIENTU19WQUxfUklHSFQ6CisgICAgICAgICAgICByZXR1
cm4gRlJJR0hUOworICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX0NFTlRFUjogIC8vIE5vbi1zdGFuZGFyZCBDU1MgdmFsdWUKKyAgICAgICAgICAgIHJldHVy
biBGTk9ORTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZO
T05FOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRUtIVE1MTGluZUJyZWFrIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQorewor
ICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIExCTk9STUFMOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfTk9STUFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQUZURVJfV0hJVEVfU1BBQ0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9BRlRFUl9XSElURV9TUEFDRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVLSFRNTExpbmVC
cmVhaygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9BRlRFUl9XSElURV9TUEFDRToKKyAgICAgICAgICAgIHJldHVybiBBRlRFUl9X
SElURV9TUEFDRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoKKyAgICAgICAgICAgIHJl
dHVybiBMQk5PUk1BTDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIExCTk9STUFMOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRUxpc3RTdHlsZVBvc2l0aW9uIGUpCisgICAgOiBtX3R5cGUoQ1NT
X0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIE9VVFNJREU6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9PVVRTSURFOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgSU5TSURFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfSU5TSURFOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKEVMaXN0U3R5bGVQb3NpdGlvbikobV92YWx1ZS5pZGVudCAt
IENTU19WQUxfT1VUU0lERSk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFTGlzdFN0eWxlVHlwZSBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBMTk9ORToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBESVNDOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
RElTQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENJUkNMRToKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NJUkNMRTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNRVUFSRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X1NRVUFSRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExERUNJTUFMOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfREVDSU1BTDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERFQ0lNQUxfTEVBRElOR19aRVJPOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfREVDSU1BTF9MRUFESU5HX1pFUk87CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBMT1dFUl9ST01BTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX0xPV0VSX1JPTUFOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVVBQRVJfUk9NQU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9VUFBF
Ul9ST01BTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExPV0VSX0dSRUVLOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTE9XRVJfR1JFRUs7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMT1dFUl9BTFBIQToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0xPV0VSX0FMUEhBOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgTE9XRVJfTEFUSU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9MT1dFUl9MQVRJTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQUEVSX0FM
UEhBOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVVBQRVJfQUxQSEE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUFBFUl9MQVRJTjoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1VQUEVSX0xBVElOOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSEVCUkVXOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfSEVCUkVXOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVJNRU5JQU46Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BUk1FTklBTjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdFT1JHSUFOOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfR0VPUkdJQU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
SktfSURFT0dSQVBISUM6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DSktf
SURFT0dSQVBISUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBISVJBR0FOQToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hJUkFHQU5BOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgS0FUQUtBTkE6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9LQVRBS0FOQTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEhJUkFHQU5BX0lST0hBOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSElS
QUdBTkFfSVJPSEE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLQVRBS0FOQV9J
Uk9IQToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0tBVEFLQU5BX0lST0hB
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVR5cGUoKSBjb25zdAoreworICAgIHN3
aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKKyAgICAg
ICAgICAgIHJldHVybiBMTk9ORTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBFTGlzdFN0eWxlVHlwZShtX3ZhbHVlLmlkZW50IC0gQ1NTX1ZBTF9ESVNDKTsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFTWFyZ2luQ29sbGFwc2UgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dp
dGNoIChlKSB7CisgICAgICAgIGNhc2UgTUNPTExBUFNFOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfQ09MTEFQU0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNU0VQQVJBVEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9TRVBBUkFU
RTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1ESVNDQVJEOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRElTQ0FSRDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVNYXJnaW5Db2xsYXBzZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9DT0xMQVBTRToKKyAgICAgICAgICAgIHJldHVybiBNQ09M
TEFQU0U7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TRVBBUkFURToKKyAgICAgICAgICAgIHJldHVy
biBNU0VQQVJBVEU7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9ESVNDQVJEOgorICAgICAgICAgICAg
cmV0dXJuIE1ESVNDQVJEOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gTUNPTExBUFNFOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRU1hcnF1ZWVCZWhhdmlvciBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBNTk9ORToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PTkU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBNU0NST0xMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfU0NST0xMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVNMSURFOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU0xJREU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBNQUxURVJOQVRFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfQUxURVJOQVRFOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRU1hcnF1ZWVCZWhhdmlv
cigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIE1OT05FOworICAgICAgICBjYXNlIENT
U19WQUxfU0NST0xMOgorICAgICAgICAgICAgcmV0dXJuIE1TQ1JPTEw7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9TTElERToKKyAgICAgICAgICAgIHJldHVybiBNU0xJREU7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9BTFRFUk5BVEU6CisgICAgICAgICAgICByZXR1cm4gTUFMVEVSTkFURTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1OT05FOworfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRU1hcnF1
ZWVEaXJlY3Rpb24gZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChl
KSB7CisgICAgICAgIGNhc2UgTUZPUldBUkQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9GT1JXQVJEUzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1CQUNL
V0FSRDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JBQ0tXQVJEUzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1BVVRPOgorICAgICAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE1VUDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1VQOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTURPV046CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9ET1dOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTUxFRlQ6
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MRUZUOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTVJJR0hUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfUklHSFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTWFycXVlZURpcmVjdGlvbigp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9GT1JXQVJEUzoKKyAgICAgICAgICAgIHJldHVybiBNRk9SV0FSRDsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX0JBQ0tXQVJEUzoKKyAgICAgICAgICAgIHJldHVybiBNQkFDS1dBUkQ7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAgICAgICAgcmV0dXJuIE1BVVRPOworICAgICAg
ICBjYXNlIENTU19WQUxfQUhFQUQ6CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9VUDogLy8gV2UgZG9u
J3Qgc3VwcG9ydCB2ZXJ0aWNhbCBsYW5ndWFnZXMsIHNvIEFIRUFEIGp1c3QgbWFwcyB0byBVUC4K
KyAgICAgICAgICAgIHJldHVybiBNVVA7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9SRVZFUlNFOgor
ICAgICAgICBjYXNlIENTU19WQUxfRE9XTjogLy8gUkVWRVJTRSBqdXN0IG1hcHMgdG8gRE9XTiwg
c2luY2Ugd2UgZG9uJ3QgZG8gdmVydGljYWwgdGV4dC4KKyAgICAgICAgICAgIHJldHVybiBNRE9X
TjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0xFRlQ6CisgICAgICAgICAgICByZXR1cm4gTUxFRlQ7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9SSUdIVDoKKyAgICAgICAgICAgIHJldHVybiBNUklHSFQ7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBNQVVUTzsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIEJDTk9STUFMOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9STUFMOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTUFUQ0g6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9NQVRDSDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX05PUk1BTDoKKyAgICAgICAgICAgIHJldHVybiBCQ05PUk1BTDsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX01BVENIOgorICAgICAgICAgICAgcmV0dXJuIE1BVENIOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQkNOT1JNQUw7Cit9CisKK3Rl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFTkJT
UE1vZGUgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7Cisg
ICAgICAgIGNhc2UgTkJOT1JNQUw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9OT1JNQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTUEFDRToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NQQUNFOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgRU5CU1BNb2RlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX1NQQUNFOgorICAgICAgICAgICAgcmV0dXJuIFNQQUNFOworICAg
ICAgICBjYXNlIENTU19WQUxfTk9STUFMOgorICAgICAgICAgICAgcmV0dXJuIE5CTk9STUFMOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTkJOT1JNQUw7Cit9
CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFT3ZlcmZsb3cgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChl
KSB7CisgICAgICAgIGNhc2UgT1ZJU0lCTEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9WSVNJQkxFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT0hJRERF
TjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hJRERFTjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE9TQ1JPTEw6CisgICAgICAgICAgICBtX3ZhbHVlLmlk
ZW50ID0gQ1NTX1ZBTF9TQ1JPTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBP
QVVUTzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPTUFSUVVFRToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX19XRUJLSVRfTUFSUVVFRTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE9PVkVSTEFZOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
T1ZFUkxBWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVPdmVyZmxvdygpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9WSVNJQkxFOgor
ICAgICAgICAgICAgcmV0dXJuIE9WSVNJQkxFOworICAgICAgICBjYXNlIENTU19WQUxfSElEREVO
OgorICAgICAgICAgICAgcmV0dXJuIE9ISURERU47CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9TQ1JP
TEw6CisgICAgICAgICAgICByZXR1cm4gT1NDUk9MTDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FV
VE86CisgICAgICAgICAgICByZXR1cm4gT0FVVE87CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9fV0VC
S0lUX01BUlFVRUU6CisgICAgICAgICAgICByZXR1cm4gT01BUlFVRUU7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9PVkVSTEFZOgorICAgICAgICAgICAgcmV0dXJuIE9PVkVSTEFZOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gT1ZJU0lCTEU7Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFUGFnZUJy
ZWFrIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAg
ICAgICBjYXNlIFBCQVVUTzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FV
VE87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQQkFMV0FZUzoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FMV0FZUzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFBCQVZPSUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9BVk9JRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVQYWdlQnJlYWsoKSBjb25zdAoreworICAg
IHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKKyAg
ICAgICAgICAgIHJldHVybiBQQkFVVE87CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgorICAg
ICAgICBjYXNlIENTU19WQUxfUklHSFQ6CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BTFdBWVM6Cisg
ICAgICAgICAgICByZXR1cm4gUEJBTFdBWVM7IC8vIENTUzIuMTogIkNvbmZvcm1pbmcgdXNlciBh
Z2VudHMgbWF5IG1hcCBsZWZ0L3JpZ2h0IHRvIGFsd2F5cy4iCisgICAgICAgIGNhc2UgQ1NTX1ZB
TF9BVk9JRDoKKyAgICAgICAgICAgIHJldHVybiBQQkFWT0lEOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUEJBVVRPOworfQorCit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVBvc2l0aW9uIGUpCisgICAg
OiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFN0
YXRpY1Bvc2l0aW9uOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1RBVElD
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVsYXRpdmVQb3NpdGlvbjoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JFTEFUSVZFOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQWJzb2x1dGVQb3NpdGlvbjoKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0FCU09MVVRFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRml4ZWRQb3NpdGlvbjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFM
X0ZJWEVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NUQVRJQzoKKyAg
ICAgICAgICAgIHJldHVybiBTdGF0aWNQb3NpdGlvbjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1JF
TEFUSVZFOgorICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUG9zaXRpb247CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9BQlNPTFVURToKKyAgICAgICAgICAgIHJldHVybiBBYnNvbHV0ZVBvc2l0aW9u
OworICAgICAgICBjYXNlIENTU19WQUxfRklYRUQ6CisgICAgICAgICAgICByZXR1cm4gRml4ZWRQ
b3NpdGlvbjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0
YXRpY1Bvc2l0aW9uOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRVJlc2l6ZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sK
KyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBSRVNJWkVfQk9USDoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JPVEg7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSRVNJWkVfSE9SSVpPTlRBTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX0hPUklaT05UQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRVNJ
WkVfVkVSVElDQUw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9WRVJUSUNB
TDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFU0laRV9OT05FOgorICAgICAg
ICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVSZXNpemUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAg
ICBjYXNlIENTU19WQUxfQk9USDoKKyAgICAgICAgICAgIHJldHVybiBSRVNJWkVfQk9USDsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX0hPUklaT05UQUw6CisgICAgICAgICAgICByZXR1cm4gUkVTSVpF
X0hPUklaT05UQUw7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9WRVJUSUNBTDoKKyAgICAgICAgICAg
IHJldHVybiBSRVNJWkVfVkVSVElDQUw7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIERlcGVuZHMgb24gc2V0dGluZ3MsIHRo
dXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgICAgICAgIHJldHVybiBS
RVNJWkVfTk9ORTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICByZXR1
cm4gUkVTSVpFX05PTkU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBSRVNJWkVfTk9ORTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVUYWJsZUxheW91dCBlKQorICAgIDogbV90eXBlKENTU19J
REVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBUQVVUTzoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBURklYRUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9G
SVhFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUYWJsZUxheW91dCgpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9GSVhFRDoKKyAg
ICAgICAgICAgIHJldHVybiBURklYRUQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAg
ICAgICAgICAgcmV0dXJuIFRBVVRPOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gVEFVVE87Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dEFsaWduIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lE
RU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFRBQVVUTzoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBMRUZUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTEVG
VDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJJR0hUOgorICAgICAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU19WQUxfUklHSFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDRU5URVI6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DRU5U
RVI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKVVNUSUZZOgorICAgICAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfSlVTVElGWTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdFQktJVF9MRUZUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfX1dFQktJVF9MRUZUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VC
S0lUX1JJR0hUOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfX1dFQktJVF9S
SUdIVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9DRU5URVI6Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9fV0VCS0lUX0NFTlRFUjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVUZXh0QWxpZ24oKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1
ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfU1RBUlQ6CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9FTkQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gRGVwZW5kcyBv
biBkaXJlY3Rpb24sIHRodXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KKyAgICAg
ICAgICAgIHJldHVybiBMRUZUOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IChFVGV4dEFsaWduKShtX3ZhbHVlLmlkZW50IC0gQ1NTX1ZBTF9fV0VCS0lUX0FVVE8pOworICAg
IH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEVUZXh0U2VjdXJpdHkgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAg
c3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgVFNOT05FOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRT
RElTQzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0RJU0M7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUU0NJUkNMRToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0NJUkNMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRTU1FVQVJFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1FVQVJFOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRTZWN1cml0eSgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICAg
ICAgcmV0dXJuIFRTTk9ORTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0RJU0M6CisgICAgICAgICAg
ICByZXR1cm4gVFNESVNDOworICAgICAgICBjYXNlIENTU19WQUxfQ0lSQ0xFOgorICAgICAgICAg
ICAgcmV0dXJuIFRTQ0lSQ0xFOworICAgICAgICBjYXNlIENTU19WQUxfU1FVQVJFOgorICAgICAg
ICAgICAgcmV0dXJuIFRTU1FVQVJFOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gVFNOT05FOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRUcmFuc2Zvcm0gZSkKKyAgICA6IG1fdHlwZShD
U1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQ0FQSVRBTElaRToK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NBUElUQUxJWkU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUFBFUkNBU0U6CisgICAgICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTX1ZBTF9VUFBFUkNBU0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBMT1dFUkNBU0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MT1dF
UkNBU0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUVE5PTkU6CisgICAgICAg
ICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgewor
ICAgICAgICBjYXNlIENTU19WQUxfQ0FQSVRBTElaRToKKyAgICAgICAgICAgIHJldHVybiBDQVBJ
VEFMSVpFOworICAgICAgICBjYXNlIENTU19WQUxfVVBQRVJDQVNFOgorICAgICAgICAgICAgcmV0
dXJuIFVQUEVSQ0FTRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0xPV0VSQ0FTRToKKyAgICAgICAg
ICAgIHJldHVybiBMT1dFUkNBU0U7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAg
ICAgICAgcmV0dXJuIFRUTk9ORTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFRUTk9ORTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVVbmljb2RlQmlkaSBlKQorICAgIDogbV90eXBlKENTU19J
REVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBVQk5vcm1hbDoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX05PUk1BTDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVtYmVkOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfRU1CRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPdmVycmlkZToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JJRElfT1ZFUlJJREU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFVW5pY29kZUJpZGkoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1
ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgorICAgICAgICAgICAgcmV0
dXJuIFVCTm9ybWFsOyAKKyAgICAgICAgY2FzZSBDU1NfVkFMX0VNQkVEOgorICAgICAgICAgICAg
cmV0dXJuIEVtYmVkOyAKKyAgICAgICAgY2FzZSBDU1NfVkFMX0JJRElfT1ZFUlJJREU6CisgICAg
ICAgICAgICByZXR1cm4gT3ZlcnJpZGU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBVQk5vcm1hbDsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVVc2VyRHJhZyBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBEUkFHX0FVVE86Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BVVRPOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRFJBR19OT05FOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERSQUdfRUxF
TUVOVDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0VMRU1FTlQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFVXNlckRyYWcoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1
ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKKyAgICAgICAgICAgIHJldHVy
biBEUkFHX0FVVE87CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICAgICAgcmV0
dXJuIERSQUdfTk9ORTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0VMRU1FTlQ6CisgICAgICAgICAg
ICByZXR1cm4gRFJBR19FTEVNRU5UOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gRFJBR19BVVRPOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVVzZXJNb2RpZnkgZSkKKyAgICA6IG1fdHlwZShD
U1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgUkVBRF9PTkxZOgor
ICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUkVBRF9PTkxZOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVBRF9XUklURToKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX1JFQURfV1JJVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEVVc2VyTW9kaWZ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRVVzZXJNb2RpZnkobV92YWx1
ZS5pZGVudCAtIENTU19WQUxfUkVBRF9PTkxZKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVVc2VyU2VsZWN0IGUpCisgICAgOiBt
X3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIFNFTEVD
VF9OT05FOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTk9ORTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNFTEVDVF9URVhUOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfVEVYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVVc2VyU2Vs
ZWN0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2Fz
ZSBDU1NfVkFMX0FVVE86CisgICAgICAgICAgICByZXR1cm4gU0VMRUNUX1RFWFQ7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIFNFTEVDVF9OT05FOworICAg
ICAgICBjYXNlIENTU19WQUxfVEVYVDoKKyAgICAgICAgICAgIHJldHVybiBTRUxFQ1RfVEVYVDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNFTEVDVF9URVhU
OworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRVZpc2liaWxpdHkgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dp
dGNoIChlKSB7CisgICAgICAgIGNhc2UgVklTSUJMRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX1ZJU0lCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBI
SURERU46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9ISURERU47CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT0xMQVBTRToKKyAgICAgICAgICAgIG1fdmFs
dWUuaWRlbnQgPSBDU1NfVkFMX0NPTExBUFNFOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVZpc2li
aWxpdHkoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBj
YXNlIENTU19WQUxfSElEREVOOgorICAgICAgICAgICAgcmV0dXJuIEhJRERFTjsKKyAgICAgICAg
Y2FzZSBDU1NfVkFMX1ZJU0lCTEU6CisgICAgICAgICAgICByZXR1cm4gVklTSUJMRTsKKyAgICAg
ICAgY2FzZSBDU1NfVkFMX0NPTExBUFNFOgorICAgICAgICAgICAgcmV0dXJuIENPTExBUFNFOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVklTSUJMRTsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVXaGl0ZVNwYWNlIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAo
ZSkgeworICAgICAgICBjYXNlIE5PUk1BTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX05PUk1BTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBSRToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1BSRTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFBSRV9XUkFQOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENT
U19WQUxfUFJFX1dSQVA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQUkVfTElO
RToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1BSRV9MSU5FOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTk9XUkFQOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfTk9XUkFQOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
S0hUTUxfTk9XUkFQOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfX1dFQktJ
VF9OT1dSQVA7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV2hpdGVTcGFjZSgpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9fV0VCS0lU
X05PV1JBUDoKKyAgICAgICAgICAgIHJldHVybiBLSFRNTF9OT1dSQVA7CisgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9OT1dSQVA6CisgICAgICAgICAgICByZXR1cm4gTk9XUkFQOworICAgICAgICBjYXNl
IENTU19WQUxfUFJFOgorICAgICAgICAgICAgcmV0dXJuIFBSRTsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX1BSRV9XUkFQOgorICAgICAgICAgICAgcmV0dXJuIFBSRV9XUkFQOworICAgICAgICBjYXNl
IENTU19WQUxfUFJFX0xJTkU6CisgICAgICAgICAgICByZXR1cm4gUFJFX0xJTkU7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9OT1JNQUw6CisgICAgICAgICAgICByZXR1cm4gTk9STUFMOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTk9STUFMOworfQorCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVdvcmRC
cmVhayBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAg
ICAgICAgY2FzZSBOb3JtYWxXb3JkQnJlYWs6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9OT1JNQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCcmVha0Fs
bFdvcmRCcmVhazoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JSRUFLX0FM
TDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJyZWFrV29yZEJyZWFrOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQlJFQUtfV09SRDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVXb3JkQnJlYWsoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVu
dCkgeworICAgICAgICBjYXNlIENTU19WQUxfQlJFQUtfQUxMOgorICAgICAgICAgICAgcmV0dXJu
IEJyZWFrQWxsV29yZEJyZWFrOworICAgICAgICBjYXNlIENTU19WQUxfQlJFQUtfV09SRDoKKyAg
ICAgICAgICAgIHJldHVybiBCcmVha1dvcmRCcmVhazsKKyAgICAgICAgY2FzZSBDU1NfVkFMX05P
Uk1BTDoKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxXb3JkQnJlYWs7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOb3JtYWxXb3JkQnJlYWs7Cit9CisKK3Rl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFV29y
ZFdyYXAgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7Cisg
ICAgICAgIGNhc2UgTm9ybWFsV29yZFdyYXA6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9OT1JNQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCcmVha1dv
cmRXcmFwOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQlJFQUtfV09SRDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVXb3JkV3JhcCgpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CUkVBS19XT1JEOgorICAgICAg
ICAgICAgcmV0dXJuIEJyZWFrV29yZFdyYXA7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6
CisgICAgICAgICAgICByZXR1cm4gTm9ybWFsV29yZFdyYXA7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOb3JtYWxXb3JkV3JhcDsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpbmVDYXAgZSkK
KyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNh
c2UgQnV0dENhcDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JVVFQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSb3VuZENhcDoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX1JPVU5EOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3F1YXJlQ2FwOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1FV
QVJFOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUNhcCgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtX3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9CVVRUOgorICAgICAgICAg
ICAgcmV0dXJuIEJ1dHRDYXA7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9ST1VORDoKKyAgICAgICAg
ICAgIHJldHVybiBSb3VuZENhcDsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1NRVUFSRToKKyAgICAg
ICAgICAgIHJldHVybiBTcXVhcmVDYXA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBCdXR0Q2FwOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUpvaW4gZSkKKyAgICA6IG1fdHlwZShDU1Nf
SURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgTWl0ZXJKb2luOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfTUlURVI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBSb3VuZEpvaW46CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9ST1VORDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJldmVsSm9p
bjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JFVkVMOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgTGluZUpvaW4oKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVu
dCkgeworICAgICAgICBjYXNlIENTU19WQUxfTUlURVI6CisgICAgICAgICAgICByZXR1cm4gTWl0
ZXJKb2luOworICAgICAgICBjYXNlIENTU19WQUxfUk9VTkQ6CisgICAgICAgICAgICByZXR1cm4g
Um91bmRKb2luOworICAgICAgICBjYXNlIENTU19WQUxfQkVWRUw6CisgICAgICAgICAgICByZXR1
cm4gQmV2ZWxKb2luOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gTWl0ZXJKb2luOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dERpcmVjdGlvbiBlKQorICAgIDogbV90eXBlKENTU19JREVO
VCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBMVFI6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9MVFI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBSVEw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9SVEw7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9uKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1f
dmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0xUUjoKKyAgICAgICAgICAgIHJl
dHVybiBMVFI7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9SVEw6CisgICAgICAgICAgICByZXR1cm4g
UlRMOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTFRSOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoV2luZFJ1bGUgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChl
KSB7CisgICAgICAgIGNhc2UgUlVMRV9OT05aRVJPOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfTk9OWkVSTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJV
TEVfRVZFTk9ERDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0VWRU5PREQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaW5kUnVsZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05aRVJPOgorICAgICAgICAg
ICAgcmV0dXJuIFJVTEVfTk9OWkVSTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0VWRU5PREQ6Cisg
ICAgICAgICAgICByZXR1cm4gUlVMRV9FVkVOT0REOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gUlVMRV9OT05aRVJPOworfQorCisjaWYgRU5BQkxFKFNWRykK
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVBbGlnbm1lbnRCYXNlbGluZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBz
d2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBBQl9BVVRPOgorICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFC
X0JBU0VMSU5FOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQkFTRUxJTkU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQl9CRUZPUkVfRURHRToKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0JFRk9SRV9FREdFOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQUJfVEVYVF9CRUZPUkVfRURHRToKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFRfQkVGT1JFX0VER0U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBQl9NSURETEU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9NSURETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQl9DRU5U
UkFMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfQ0VOVFJBTDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCX0FGVEVSX0VER0U6CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BRlRFUl9FREdFOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQUJfVEVYVF9BRlRFUl9FREdFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU19WQUxfVEVYVF9BRlRFUl9FREdFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQUJfSURFT0dSQVBISUM6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9JREVPR1JBUEhJQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCX0FMUEhB
QkVUSUM6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BTFBIQUJFVElDOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJfSEFOR0lORzoKKyAgICAgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0hBTkdJTkc7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBQl9NQVRIRU1BVElDQUw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0g
Q1NTX1ZBTF9NQVRIRU1BVElDQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQWxpZ25tZW50QmFz
ZWxpbmUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBj
YXNlIENTU19WQUxfQVVUTzoKKyAgICAgICAgICAgIHJldHVybiBBQl9BVVRPOworICAgICAgICBj
YXNlIENTU19WQUxfQkFTRUxJTkU6CisgICAgICAgICAgICByZXR1cm4gQUJfQkFTRUxJTkU7Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9CRUZPUkVfRURHRToKKyAgICAgICAgICAgIHJldHVybiBBQl9C
RUZPUkVfRURHRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1RFWFRfQkVGT1JFX0VER0U6CisgICAg
ICAgICAgICByZXR1cm4gQUJfVEVYVF9CRUZPUkVfRURHRTsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X01JRERMRToKKyAgICAgICAgICAgIHJldHVybiBBQl9NSURETEU7CisgICAgICAgIGNhc2UgQ1NT
X1ZBTF9DRU5UUkFMOgorICAgICAgICAgICAgcmV0dXJuIEFCX0NFTlRSQUw7CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9BRlRFUl9FREdFOgorICAgICAgICAgICAgcmV0dXJuIEFCX0FGVEVSX0VER0U7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0U6CisgICAgICAgICAgICByZXR1
cm4gQUJfVEVYVF9BRlRFUl9FREdFOworICAgICAgICBjYXNlIENTU19WQUxfSURFT0dSQVBISUM6
CisgICAgICAgICAgICByZXR1cm4gQUJfSURFT0dSQVBISUM7CisgICAgICAgIGNhc2UgQ1NTX1ZB
TF9BTFBIQUJFVElDOgorICAgICAgICAgICAgcmV0dXJuIEFCX0FMUEhBQkVUSUM7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9IQU5HSU5HOgorICAgICAgICAgICAgcmV0dXJuIEFCX0hBTkdJTkc7Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9NQVRIRU1BVElDQUw6CisgICAgICAgICAgICByZXR1cm4gQUJf
TUFUSEVNQVRJQ0FMOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gQUJfQVVUTzsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKEVDb2xvckludGVycG9sYXRpb24gZSkKKyAgICA6IG1fdHlwZShDU1Nf
SURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQ0lfQVVUTzoKKyAgICAg
ICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDSV9TUkdCOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfU1JHQjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENJX0xJTkVBUlJHQjoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xJTkVBUlJHQjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVDb2xvckludGVycG9sYXRpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAo
bV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfU1JHQjoKKyAgICAgICAgICAg
IHJldHVybiBDSV9TUkdCOworICAgICAgICBjYXNlIENTU19WQUxfTElORUFSUkdCOgorICAgICAg
ICAgICAgcmV0dXJuIENJX0xJTkVBUlJHQjsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Cisg
ICAgICAgICAgICByZXR1cm4gQ0lfQVVUTzsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIENJX0FVVE87Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQ29sb3JSZW5kZXJpbmcgZSkKKyAgICA6IG1f
dHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgQ1JfQVVU
TzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDUl9PUFRJTUlaRVNQRUVEOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfT1BUSU1JWkVTUEVFRDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENSX09QVElNSVpFUVVBTElUWToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NfVkFMX09QVElNSVpFUVVBTElUWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDb2xv
clJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9PUFRJTUlaRVNQRUVEOgorICAgICAgICAgICAgcmV0dXJuIENSX09Q
VElNSVpFU1BFRUQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9PUFRJTUlaRVFVQUxJVFk6CisgICAg
ICAgICAgICByZXR1cm4gQ1JfT1BUSU1JWkVRVUFMSVRZOworICAgICAgICBjYXNlIENTU19WQUxf
QVVUTzoKKyAgICAgICAgICAgIHJldHVybiBDUl9BVVRPOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ1JfQVVUTzsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVEb21pbmFudEJhc2VsaW5lIGUp
CisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRjaCAoZSkgeworICAgICAgICBj
YXNlIERCX0FVVE86CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9BVVRPOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREJfVVNFX1NDUklQVDoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1VTRV9TQ1JJUFQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBEQl9OT19DSEFOR0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9OT19DSEFOR0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
Ql9SRVNFVF9TSVpFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUkVTRVRf
U0laRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERCX0NFTlRSQUw6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9DRU5UUkFMOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgREJfTUlERExFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfTUlERExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREJfVEVY
VF9CRUZPUkVfRURHRToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1RFWFRf
QkVGT1JFX0VER0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQl9URVhUX0FG
VEVSX0VER0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9URVhUX0FGVEVS
X0VER0U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQl9JREVPR1JBUEhJQzoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0lERU9HUkFQSElDOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREJfQUxQSEFCRVRJQzoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FMUEhBQkVUSUM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEQl9IQU5HSU5HOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfSEFOR0lORzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERCX01BVEhFTUFU
SUNBTDoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX01BVEhFTUFUSUNBTDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVEb21pbmFudEJhc2VsaW5lKCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86CisgICAg
ICAgICAgICByZXR1cm4gREJfQVVUTzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1VTRV9TQ1JJUFQ6
CisgICAgICAgICAgICByZXR1cm4gREJfVVNFX1NDUklQVDsKKyAgICAgICAgY2FzZSBDU1NfVkFM
X05PX0NIQU5HRToKKyAgICAgICAgICAgIHJldHVybiBEQl9OT19DSEFOR0U7CisgICAgICAgIGNh
c2UgQ1NTX1ZBTF9SRVNFVF9TSVpFOgorICAgICAgICAgICAgcmV0dXJuIERCX1JFU0VUX1NJWkU7
CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9JREVPR1JBUEhJQzoKKyAgICAgICAgICAgIHJldHVybiBE
Ql9JREVPR1JBUEhJQzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0FMUEhBQkVUSUM6CisgICAgICAg
ICAgICByZXR1cm4gREJfQUxQSEFCRVRJQzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX0hBTkdJTkc6
CisgICAgICAgICAgICByZXR1cm4gREJfSEFOR0lORzsKKyAgICAgICAgY2FzZSBDU1NfVkFMX01B
VEhFTUFUSUNBTDoKKyAgICAgICAgICAgIHJldHVybiBEQl9NQVRIRU1BVElDQUw7CisgICAgICAg
IGNhc2UgQ1NTX1ZBTF9DRU5UUkFMOgorICAgICAgICAgICAgcmV0dXJuIERCX0NFTlRSQUw7Cisg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9NSURETEU6CisgICAgICAgICAgICByZXR1cm4gREJfTUlERExF
OworICAgICAgICBjYXNlIENTU19WQUxfVEVYVF9BRlRFUl9FREdFOgorICAgICAgICAgICAgcmV0
dXJuIERCX1RFWFRfQUZURVJfRURHRTsKKyAgICAgICAgY2FzZSBDU1NfVkFMX1RFWFRfQkVGT1JF
X0VER0U6CisgICAgICAgICAgICByZXR1cm4gREJfVEVYVF9CRUZPUkVfRURHRTsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIERCX0FVVE87Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFSW1hZ2VS
ZW5kZXJpbmcgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7CisgICAgc3dpdGNoIChlKSB7
CisgICAgICAgIGNhc2UgSVJfQVVUTzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1Nf
VkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJUl9PUFRJTUlaRVNQ
RUVEOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfT1BUSU1JWkVTUEVFRDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElSX09QVElNSVpFUVVBTElUWToKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX09QVElNSVpFUVVBTElUWTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVJbWFnZVJlbmRlcmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X3ZhbHVlLmlkZW50KSB7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAgICAgICAg
cmV0dXJuIElSX0FVVE87CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9PUFRJTUlaRVNQRUVEOgorICAg
ICAgICAgICAgcmV0dXJuIElSX09QVElNSVpFU1BFRUQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9P
UFRJTUlaRVFVQUxJVFk6CisgICAgICAgICAgICByZXR1cm4gSVJfT1BUSU1JWkVRVUFMSVRZOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSVJfQVVUTzsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVQb2ludGVyRXZlbnRzIGUpCisgICAgOiBtX3R5cGUoQ1NTX0lERU5UKQoreworICAgIHN3aXRj
aCAoZSkgeworICAgICAgICBjYXNlIFBFX05PTkU6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9OT05FOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEVfU1RS
T0tFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfU1RST0tFOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEVfRklMTDoKKyAgICAgICAgICAgIG1fdmFsdWUu
aWRlbnQgPSBDU1NfVkFMX0ZJTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
RV9QQUlOVEVEOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfUEFJTlRFRDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBFX1ZJU0lCTEU6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9WSVNJQkxFOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUEVfVklTSUJMRV9TVFJPS0U6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTX1ZBTF9WSVNJQkxFU1RST0tFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgUEVfVklTSUJMRV9GSUxMOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxf
VklTSUJMRUZJTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQRV9WSVNJQkxF
X1BBSU5URUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9WSVNJQkxFUEFJ
TlRFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBFX0FMTDoKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVQ
b2ludGVyRXZlbnRzKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAg
ICAgICAgY2FzZSBDU1NfVkFMX0FMTDoKKyAgICAgICAgICAgIHJldHVybiBQRV9BTEw7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgorICAgICAgICAgICAgcmV0dXJuIFBFX05PTkU7CisgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9WSVNJQkxFUEFJTlRFRDoKKyAgICAgICAgICAgIHJldHVybiBQRV9W
SVNJQkxFX1BBSU5URUQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9WSVNJQkxFRklMTDoKKyAgICAg
ICAgICAgIHJldHVybiBQRV9WSVNJQkxFX0ZJTEw7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9WSVNJ
QkxFU1RST0tFOgorICAgICAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEVfU1RST0tFOworICAgICAg
ICBjYXNlIENTU19WQUxfVklTSUJMRToKKyAgICAgICAgICAgIHJldHVybiBQRV9WSVNJQkxFOwor
ICAgICAgICBjYXNlIENTU19WQUxfUEFJTlRFRDoKKyAgICAgICAgICAgIHJldHVybiBQRV9QQUlO
VEVEOworICAgICAgICBjYXNlIENTU19WQUxfRklMTDoKKyAgICAgICAgICAgIHJldHVybiBQRV9G
SUxMOworICAgICAgICBjYXNlIENTU19WQUxfU1RST0tFOgorICAgICAgICAgICAgcmV0dXJuIFBF
X1NUUk9LRTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFBF
X0FMTDsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEVTaGFwZVJlbmRlcmluZyBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sK
KyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBJUl9BVVRPOgorICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU19WQUxfQVVUTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIElSX09QVElNSVpFU1BFRUQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZB
TF9PUFRJTUlaRVNQRUVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1JfQ1JJ
U1BFREdFUzoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0NSSVNQRURHRVM7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTUl9HRU9NRVRSSUNQUkVDSVNJT046
CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9HRU9NRVRSSUNQUkVDSVNJT047
CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFU2hhcGVSZW5kZXJpbmcoKSBjb25zdAoreworICAgIHN3
aXRjaCAobV92YWx1ZS5pZGVudCkgeworICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKKyAgICAg
ICAgICAgIHJldHVybiBTUl9BVVRPOworICAgICAgICBjYXNlIENTU19WQUxfT1BUSU1JWkVTUEVF
RDoKKyAgICAgICAgICAgIHJldHVybiBTUl9PUFRJTUlaRVNQRUVEOworICAgICAgICBjYXNlIENT
U19WQUxfQ1JJU1BFREdFUzoKKyAgICAgICAgICAgIHJldHVybiBTUl9DUklTUEVER0VTOworICAg
ICAgICBjYXNlIENTU19WQUxfR0VPTUVUUklDUFJFQ0lTSU9OOgorICAgICAgICAgICAgcmV0dXJu
IFNSX0dFT01FVFJJQ1BSRUNJU0lPTjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFNSX0FVVE87Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dEFuY2hvciBlKQorICAgIDogbV90eXBlKENT
U19JREVOVCkKK3sKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBUQV9TVEFSVDoKKyAg
ICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX1NUQVJUOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVEFfTUlERExFOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfTUlERExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVEFfRU5E
OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfRU5EOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRVRleHRBbmNob3IoKSBjb25zdAoreworICAgIHN3aXRjaCAobV92YWx1ZS5pZGVu
dCkgeworICAgICAgICBjYXNlIENTU19WQUxfU1RBUlQ6CisgICAgICAgICAgICByZXR1cm4gVEFf
U1RBUlQ7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9NSURETEU6CisgICAgICAgICAgICByZXR1cm4g
VEFfTUlERExFOworICAgICAgICBjYXNlIENTU19WQUxfRU5EOgorICAgICAgICAgICAgcmV0dXJu
IFRBX0VORDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRB
X1NUQVJUOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoRVRleHRSZW5kZXJpbmcgZSkKKyAgICA6IG1fdHlwZShDU1NfSURFTlQpCit7
CisgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgVFJfQVVUTzoKKyAgICAgICAgICAgIG1f
dmFsdWUuaWRlbnQgPSBDU1NfVkFMX0FVVE87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBUUl9PUFRJTUlaRVNQRUVEOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19W
QUxfT1BUSU1JWkVTUEVFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRSX09Q
VElNSVpFTEVHSUJJTElUWToKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX09Q
VElNSVpFTEVHSUJJTElUWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRSX0dF
T01FVFJJQ1BSRUNJU0lPTjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0dF
T01FVFJJQ1BSRUNJU0lPTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0UmVuZGVyaW5nKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX0FVVE86CisgICAgICAgICAgICByZXR1cm4gVFJfQVVUTzsKKyAgICAgICAgY2FzZSBDU1Nf
VkFMX09QVElNSVpFU1BFRUQ6CisgICAgICAgICAgICByZXR1cm4gVFJfT1BUSU1JWkVTUEVFRDsK
KyAgICAgICAgY2FzZSBDU1NfVkFMX09QVElNSVpFTEVHSUJJTElUWToKKyAgICAgICAgICAgIHJl
dHVybiBUUl9PUFRJTUlaRUxFR0lCSUxJVFk7CisgICAgICAgIGNhc2UgQ1NTX1ZBTF9HRU9NRVRS
SUNQUkVDSVNJT046CisgICAgICAgICAgICByZXR1cm4gVFJfR0VPTUVUUklDUFJFQ0lTSU9OOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVFJfQVVUTzsKK30K
KwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEVXcml0aW5nTW9kZSBlKQorICAgIDogbV90eXBlKENTU19JREVOVCkKK3sKKyAgICBzd2l0Y2gg
KGUpIHsKKyAgICAgICAgY2FzZSBXTV9MUlRCOgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU19WQUxfTFJfVEI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXTV9MUjoK
KyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NfVkFMX0xSOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV01fUkxUQjoKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBD
U1NfVkFMX1JMX1RCOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV01fUkw6Cisg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTX1ZBTF9STDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdNX1RCUkw6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
X1ZBTF9UQl9STDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdNX1RCOgorICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU19WQUxfVEI7CisgICAgICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFV3JpdGluZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiAoRVdyaXRpbmdNb2RlKShtX3Zh
bHVlLmlkZW50IC0gQ1NTX1ZBTF9MUl9UQik7Cit9CisKKyNlbmRpZgorCit9CisKKyNlbmRpZgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyNjY1MykKKysrIFdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogICogICAg
ICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYu
Y29tKQogICogICAgICAgICAgIChDKSAyMDA2IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tz
aGFua3MuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1
cnlha292IDxhcEB3ZWJraXQub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMywxMyArMzQs
MTMgQEAKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1wb3J0UnVs
ZS5oIgogI2luY2x1ZGUgIkNTU01lZGlhUnVsZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVT
aGVldC5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDU1NWYWx1
ZUxpc3QuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIK
QEAgLTEyMDUsNyArMTIwNiw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rv
cihDU1MKIAogICAgIC8vIENoZWNrIHRoZSBzZWxlY3RvcgogICAgIFNlbGVjdG9yTWF0Y2ggbWF0
Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVudCwgdHJ1ZSwgZmFsc2UpOwotICAgIGlmKG1h
dGNoICE9IFNlbGVjdG9yTWF0Y2hlcykgcmV0dXJuIGZhbHNlOworICAgIGlmIChtYXRjaCAhPSBT
ZWxlY3Rvck1hdGNoZXMpIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwc2V1ZG9TdHlsZSAhPSBS
ZW5kZXJTdHlsZTo6Tk9QU0VVRE8gJiYgcHNldWRvU3R5bGUgIT0gZHluYW1pY1BzZXVkbykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIzNiwxMCArMTIzNyw5IEBAIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKHBzZXVkb1N0eWxlICE9IFJl
bmRlclN0eWxlOjpOT1BTRVVETyAmJiBwc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAg
ICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogCi0gICAgc3dpdGNoKHJl
bGF0aW9uKSB7CisgICAgc3dpdGNoIChyZWxhdGlvbikgewogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpEZXNjZW5kYW50OgotICAgICAgICAgICAgd2hpbGUodHJ1ZSkKLSAgICAgICAgICAgIHsK
KyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbiA9IGUt
PnBhcmVudE5vZGUoKTsKICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5
OwpAQCAtMTI2OCwxMCArMTI2OCw5IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2gg
Q1NTU3R5bGUKICAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZmFsc2Us
IGZhbHNlKTsgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RB
ZGphY2VudDoKLSAgICAgICAgICAgIHdoaWxlKHRydWUpCi0gICAgICAgICAgICB7CisgICAgICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5wcmV2aW91
c1NpYmxpbmcoKTsKLSAgICAgICAgICAgICAgICB3aGlsZShuICYmICFuLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAg
ICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2Nh
bGx5OwpAQCAtMTI5Myw3ICsxMjkyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRj
aCBDU1NTdHlsZQogCiBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoQ1NT
U2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2Vs
ZWN0b3IpCiB7Ci0gICAgaWYoIWUpCisgICAgaWYgKCFlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoc2VsLT5oYXNUYWcoKSkgewpAQCAtMTMyNyw3ICsxMzI2LDcgQEAgYm9vbCBD
U1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICBpZiAodmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dHJpYnV0ZSBpcyBub3Qgc2V0
CiAKLSAgICAgICAgc3dpdGNoKHNlbC0+bV9tYXRjaCkgeworICAgICAgICBzd2l0Y2ggKHNlbC0+
bV9tYXRjaCkgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKICAgICAgICAgICAg
IGlmICgoaXNYTUxEb2MgJiYgc2VsLT5tX3ZhbHVlICE9IHZhbHVlKSB8fCAoIWlzWE1MRG9jICYm
ICFlcXVhbElnbm9yaW5nQ2FzZShzZWwtPm1fdmFsdWUsIHZhbHVlKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM4MSw3ICsxMzgwLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgaWYoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykgCisg
ICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpIAogICAgIHsK
ICAgICAgICAgc3dpdGNoIChzZWwtPnBzZXVkb1R5cGUoKSkgewogICAgICAgICAgICAgLy8gUHNl
dWRvIGNsYXNzZXM6CkBAIC0xNjYxLDEyICsxNjYwLDEyIEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRk
UnVsZXNGcm9tU2hlZXQoQ1NTU3QKICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHMgPSBy
dWxlLT5zZWxlY3RvcigpOyBzOyBzID0gcy0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGFkZFJ1
bGUocnVsZSwgcyk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihpdGVtLT5pc0ltcG9ydFJ1
bGUoKSkgeworICAgICAgICBlbHNlIGlmIChpdGVtLT5pc0ltcG9ydFJ1bGUoKSkgewogICAgICAg
ICAgICAgQ1NTSW1wb3J0UnVsZSogaW1wb3J0ID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+
KGl0ZW0pOwogICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwgbWVkaXVtLT5ldmFs
KGltcG9ydC0+bWVkaWEoKSkpCiAgICAgICAgICAgICAgICAgYWRkUnVsZXNGcm9tU2hlZXQoaW1w
b3J0LT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgc3R5bGVTZWxlY3Rvcik7CiAgICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZihpdGVtLT5pc01lZGlhUnVsZSgpKSB7CisgICAgICAgIGVsc2UgaWYgKGl0
ZW0tPmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAgICAgIENTU01lZGlhUnVsZSogciA9IHN0YXRp
Y19jYXN0PENTU01lZGlhUnVsZSo+KGl0ZW0pOwogICAgICAgICAgICAgQ1NTUnVsZUxpc3QqIHJ1
bGVzID0gci0+Y3NzUnVsZXMoKTsKIApAQCAtMTcwNSwxMSArMTcwNCwxMSBAQCBzdGF0aWMgTGVu
Z3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpCiAgICAgICAgICAgICAqb2sgPSBmYWxzZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRp
dmVUeXBlKCk7Ci0gICAgICAgIGlmKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UgJiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQorICAgICAgICBpZiAo
dHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19ERUcpCiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKSwgRml4ZWQpOwotICAgICAgICBl
bHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAg
ICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAg
ICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBl
cmNlbnQpOwotICAgICAgICBlbHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpCisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpCiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlmIChvaykKICAgICAgICAg
ICAgICpvayA9IGZhbHNlOwpAQCAtMTcyOSw3ICsxNzI4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseURlY2xhcmF0aW9ucwogICAgICAgICAgICAgLy8gZ2l2ZSBzcGVjaWFsIHByaW9y
aXR5IHRvIGZvbnQteHh4LCBjb2xvciBwcm9wZXJ0aWVzCiAgICAgICAgICAgICBpZiAoaXNJbXBv
cnRhbnQgPT0gY3VycmVudC5pc0ltcG9ydGFudCgpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBm
aXJzdDsKLSAgICAgICAgICAgICAgICBzd2l0Y2goY3VycmVudC5pZCgpKSB7CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChjdXJyZW50LmlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NfUFJPUF9MSU5FX0hFSUdIVDoKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGluZUhlaWdo
dFZhbHVlID0gY3VycmVudC52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Qg
PSAhYXBwbHlGaXJzdDsgLy8gd2UgYXBwbHkgbGluZS1oZWlnaHQgbGF0ZXIKQEAgLTE3OTQsOCAr
MTc5Myw5IEBAIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUKIAogdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVl
KQogewotICAgIENTU1ByaW1pdGl2ZVZhbHVlICpwcmltaXRpdmVWYWx1ZSA9IDA7Ci0gICAgaWYo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSAwOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAg
ICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwogCiAgICAgTGVuZ3RoIGw7CiAgICAgYm9vbCBhcHBseSA9IGZhbHNlOwpAQCAtMTgxNCw4ICsx
ODE0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIC8v
IFdoYXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRv
IHRoZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVz
LiAgU2hvcnRoYW5kcyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlz
dCBhcyB3ZWxsIGFuZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQi
IG9yICJpbml0aWFsIiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCi0gICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihpZCkpCi0gICAgeworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4oaWQpKSB7CiAvLyBpZGVudCBvbmx5IHByb3BlcnRpZXMKICAgICBjYXNl
IENTU19QUk9QX0JBQ0tHUk9VTkRfQVRUQUNITUVOVDoKICAgICAgICAgSEFORExFX0JBQ0tHUk9V
TkRfVkFMVUUoYmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tncm91bmRBdHRhY2htZW50LCB2YWx1
ZSkKQEAgLTE4MzcsMTQyICsxODM2LDkwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0NP
TExBUFNFOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3JkZXJDb2xsYXBz
ZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwot
ICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgIHsKLSAg
ICAgICAgY2FzZSBDU1NfVkFMX0NPTExBUFNFOgotICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRl
ckNvbGxhcHNlKHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZB
TF9TRVBBUkFURToKLSAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0NPTExBUFNF
OgorICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZSh0cnVlKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TRVBBUkFURToKKyAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UoZmFsc2UpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENTU19Q
Uk9QX0JPUkRFUl9UT1BfU1RZTEU6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJvcmRlclRvcFN0eWxlLCBCb3JkZXJTdHlsZSkK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBzdHlsZS0+c2V0
Qm9yZGVyVG9wU3R5bGUoKEVCb3JkZXJTdHlsZSkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
LSBDU1NfVkFMX05PTkUpKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGUtPnNldEJvcmRlclRvcFN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9SSUdIVF9TVFlMRToKICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShib3JkZXJSaWdodFN0eWxlLCBCb3Jk
ZXJSaWdodFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkg
cmV0dXJuOwotICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHlsZSgoRUJvcmRlclN0eWxl
KShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfTk9ORSkpOworICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHls
ZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJPUF9C
T1JERVJfQk9UVE9NX1NUWUxFOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9X
SVRIX1ZBTFVFKGJvcmRlckJvdHRvbVN0eWxlLCBCb3JkZXJCb3R0b21TdHlsZSwgQm9yZGVyU3R5
bGUpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgc3R5bGUt
PnNldEJvcmRlckJvdHRvbVN0eWxlKChFQm9yZGVyU3R5bGUpKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpIC0gQ1NTX1ZBTF9OT05FKSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAg
ICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJCb3R0b21TdHlsZSgqcHJpbWl0aXZlVmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NfUFJPUF9CT1JERVJfTEVGVF9TVFlMRToKICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShib3JkZXJMZWZ0U3R5
bGUsIEJvcmRlckxlZnRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpIHJldHVybjsKLSAgICAgICAgc3R5bGUtPnNldEJvcmRlckxlZnRTdHlsZSgoRUJvcmRl
clN0eWxlKShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfTk9ORSkpOworICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyTGVm
dFN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU19Q
Uk9QX09VVExJTkVfU1RZTEU6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJ
VEhfVkFMVUUob3V0bGluZVN0eWxlLCBPdXRsaW5lU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX0FVVE8pCi0gICAgICAgICAgICBzdHlsZS0+c2V0T3V0
bGluZVN0eWxlKERPVFRFRCwgdHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRPdXRsaW5lU3R5bGUoKEVCb3JkZXJTdHlsZSkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgLSBDU1NfVkFMX05PTkUpKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9BVVRPKQor
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRPdXRsaW5lU3R5bGUoRE9UVEVELCB0cnVlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0T3V0bGluZVN0eWxlKCpw
cmltaXRpdmVWYWx1ZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NT
X1BST1BfQ0FQVElPTl9TSURFOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoY2FwdGlvblNpZGUsIENhcHRpb25TaWRlKQotICAgICAgICBpZighcHJpbWl0aXZlVmFs
dWUpIHJldHVybjsKLSAgICAgICAgRUNhcHRpb25TaWRlIGMgPSBSZW5kZXJTdHlsZTo6aW5pdGlh
bENhcHRpb25TaWRlKCk7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkKLSAgICAgICAgewotICAgICAgICBjYXNlIENTU19WQUxfTEVGVDoKLSAgICAgICAgICAgIGMg
PSBDQVBMRUZUOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JJR0hUOgotICAgICAgICAg
ICAgYyA9IENBUFJJR0hUOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1RPUDoKLSAgICAg
ICAgICAgIGMgPSBDQVBUT1A7IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfQk9UVE9NOgot
ICAgICAgICAgICAgYyA9IENBUEJPVFRPTTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUtPnNldENhcHRpb25TaWRl
KGMpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0
Q2FwdGlvblNpZGUoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXNlIENTU19QUk9QX0NMRUFSOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwoY2xlYXIsIENsZWFyKQotICAgICAgICBpZighcHJpbWl0aXZlVmFsdWUpIHJldHVy
bjsKLSAgICAgICAgRUNsZWFyIGM7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkKLSAgICAgICAgewotICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKLSAgICAgICAg
ICAgIGMgPSBDTk9ORTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAg
ICAgICAgYyA9IENMRUZUOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JJR0hUOgotICAg
ICAgICAgICAgYyA9IENSSUdIVDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9CT1RIOgot
ICAgICAgICAgICAgYyA9IENCT1RIOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0Q2xlYXIoYyk7CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDbGVhcigqcHJp
bWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1Bf
RElSRUNUSU9OOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGly
ZWN0aW9uLCBEaXJlY3Rpb24pCi0gICAgICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkgYnJlYWs7Ci0g
ICAgICAgIHN0eWxlLT5zZXREaXJlY3Rpb24ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTX1ZBTF9MVFIgPyBMVFIgOiBSVEwpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisg
ICAgICAgICAgICBzdHlsZS0+c2V0RGlyZWN0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9ESVNQTEFZOgogICAgIHsKICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGlzcGxheSwgRGlzcGxheSkKLSAgICAgICAg
aWYoIXByaW1pdGl2ZVZhbHVlKSBicmVhazsKLSAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCk7Ci0gICAgICAgIEVEaXNwbGF5IGQ7Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NfVkFMX05PTkUpCi0gICAgICAgICAgICBkID0gTk9ORTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZCA9IEVEaXNwbGF5KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTX1ZBTF9J
TkxJTkUpOwotCi0gICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KGQpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2FzZSBDU1NfUFJPUF9FTVBUWV9D
RUxMUzoKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGVtcHR5Q2Vs
bHMsIEVtcHR5Q2VsbHMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIGJyZWFrOwotICAg
ICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKLSAgICAgICAgaWYgKGlk
ID09IENTU19WQUxfU0hPVykKLSAgICAgICAgICAgIHN0eWxlLT5zZXRFbXB0eUNlbGxzKFNIT1cp
OwotICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NfVkFMX0hJREUpCi0gICAgICAgICAgICBzdHls
ZS0+c2V0RW1wdHlDZWxscyhISURFKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAg
ICAgICAgICAgc3R5bGUtPnNldEVtcHR5Q2VsbHMoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU19QUk9QX0ZMT0FUOgogICAgIHsKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZmxvYXRpbmcsIEZsb2F0aW5nKQotICAgICAgICBp
ZighcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgRUZsb2F0IGY7Ci0gICAgICAgIHN3
aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgewotICAgICAgICBjYXNl
IENTU19WQUxfTEVGVDoKLSAgICAgICAgICAgIGYgPSBGTEVGVDsgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTX1ZBTF9SSUdIVDoKLSAgICAgICAgICAgIGYgPSBGUklHSFQ7IGJyZWFrOwotICAgICAg
ICBjYXNlIENTU19WQUxfTk9ORToKLSAgICAgICAgY2FzZSBDU1NfVkFMX0NFTlRFUjogIC8vTm9u
IHN0YW5kYXJ0IENTUy1WYWx1ZQotICAgICAgICAgICAgZiA9IEZOT05FOyBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgc3R5bGUtPnNldEZsb2F0aW5nKGYpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUp
CisgICAgICAgICAgICBzdHlsZS0+c2V0RmxvYXRpbmcoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk4NCw3ICsxOTMxLDggQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCiAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKICAgICAgICAgICAgICAg
ICBjYXNlIENTU19WQUxfT0JMSVFVRToKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogb2JsaXF1
ZSBpcyB0aGUgc2FtZSBhcyBpdGFsaWMgZm9yIHRoZSBtb21lbnQuLi4KQEAgLTIwMTEsNyArMTk1
OSw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
ZWxzZSBpZiAoaXNJbml0aWFsKQogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxs
Q2FwcyhmYWxzZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKTsKICAgICAgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PUk1BTCkKICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKQEAgLTIwMzMsNyAr
MTk4Miw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKQogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChjTm9ybWFsV2VpZ2h0KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGFyZW4ndCBnZW51
aW5lbHkgc3VwcG9ydGluZyBzcGVjaWZpYyB3ZWlnaHQgdmFsdWVzLgpAQCAtMjA3MSwyNyArMjAy
MSwxNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2Fz
ZSBDU1NfUFJPUF9MSVNUX1NUWUxFX1BPU0lUSU9OOgogICAgIHsKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwobGlzdFN0eWxlUG9zaXRpb24sIExpc3RTdHlsZVBvc2l0aW9uKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRMaXN0U3R5bGVQb3Np
dGlvbigoRUxpc3RTdHlsZVBvc2l0aW9uKSAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBD
U1NfVkFMX09VVFNJREUpKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGUtPnNldExpc3RTdHlsZVBvc2l0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRToKICAg
ICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpc3RTdHlsZVR5cGUsIExp
c3RTdHlsZVR5cGUpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBFTGlzdFN0eWxlVHlwZSB0OwotICAgICAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTX1ZBTF9OT05FKSB7IC8vIGlt
cG9ydGFudCEhCi0gICAgICAgICAgICAgIHQgPSBMTk9ORTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgIHQgPSBFTGlzdFN0eWxlVHlwZShpZCAtIENTU19WQUxfRElTQyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHlsZS0+c2V0TGlzdFN0eWxlVHlwZSh0KTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+
c2V0TGlzdFN0eWxlVHlwZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMTA5LDIzICsyMDQ4LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAK
LSAgICAgICAgRU92ZXJmbG93IG87Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEU6Ci0gICAgICAgICAg
ICAgICAgbyA9IE9WSVNJQkxFOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9ISURE
RU46Ci0gICAgICAgICAgICAgICAgbyA9IE9ISURERU47IGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX1NDUk9MTDoKLSAgICAgICAgICAgICAgICBvID0gT1NDUk9MTDsgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICBvID0gT0FVVE87
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX19XRUJLSVRfTUFSUVVFRToKLSAgICAg
ICAgICAgICAgICBvID0gT01BUlFVRUU7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFM
X09WRVJMQVk6Ci0gICAgICAgICAgICAgICAgbyA9IE9PVkVSTEFZOyBicmVhazsKLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IEVPdmVyZmxvdyBvID0gKnByaW1pdGl2ZVZhbHVlOworCiAgICAgICAgIHN0eWxlLT5zZXRPdmVy
Zmxvd1gobyk7CiAgICAgICAgIHN0eWxlLT5zZXRPdmVyZmxvd1kobyk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIxMzQsMjI4ICsyMDU4LDgyIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQKICAgICBjYXNlIENTU19QUk9QX09WRVJGTE9XX1g6CiAgICAgewogICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChvdmVyZmxvd1gsIE92ZXJmbG93WCkKLSAgICAg
ICAgRU92ZXJmbG93IG87Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkKLSAgICAgICAgewotICAgICAgICBjYXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAg
IG8gPSBPVklTSUJMRTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9ISURERU46Ci0gICAg
ICAgICAgICBvID0gT0hJRERFTjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9TQ1JPTEw6
Ci0gICAgICAgICAgICBvID0gT1NDUk9MTDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9B
VVRPOgotICAgICAgICAgICAgbyA9IE9BVVRPOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFM
X19XRUJLSVRfTUFSUVVFRToKLSAgICAgICAgICAgIG8gPSBPTUFSUVVFRTsgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9PVkVSTEFZOgotICAgICAgICAgICAgbyA9IE9PVkVSTEFZOyBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBzdHlsZS0+c2V0T3ZlcmZsb3dYKG8pOworICAgICAgICBzdHlsZS0+c2V0T3ZlcmZsb3dY
KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENT
U19QUk9QX09WRVJGTE9XX1k6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChvdmVyZmxvd1ksIE92ZXJmbG93WSkKLSAgICAgICAgRU92ZXJmbG93IG87Ci0gICAgICAg
IHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgewotICAgICAgICBj
YXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAgIG8gPSBPVklTSUJMRTsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ1NTX1ZBTF9ISURERU46Ci0gICAgICAgICAgICBvID0gT0hJRERFTjsgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9TQ1JPTEw6Ci0gICAgICAgICAgICBvID0gT1NDUk9M
TDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgotICAgICAgICAgICAgbyA9IE9B
VVRPOyBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX19XRUJLSVRfTUFSUVVFRToKLSAgICAg
ICAgICAgIG8gPSBPTUFSUVVFRTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9PVkVSTEFZ
OgotICAgICAgICAgICAgbyA9IE9PVkVSTEFZOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0T3ZlcmZsb3dZ
KG8pOworICAgICAgICBzdHlsZS0+c2V0T3ZlcmZsb3dZKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJFQUtfQkVGT1JF
OgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShw
YWdlQnJlYWtCZWZvcmUsIFBhZ2VCcmVha0JlZm9yZSwgUGFnZUJyZWFrKQotICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKSByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgotICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRQYWdlQnJlYWtCZWZvcmUoUEJBVVRPKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX1JJR0hUOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FMV0FZUzoKLSAgICAg
ICAgICAgICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrQmVmb3JlKFBCQUxXQVlTKTsgLy8gQ1NTMi4x
OiAiQ29uZm9ybWluZyB1c2VyIGFnZW50cyBtYXkgbWFwIGxlZnQvcmlnaHQgdG8gYWx3YXlzLiIK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVk9JRDoK
LSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrQmVmb3JlKFBCQVZPSUQpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQYWdlQnJlYWtCZWZvcmUoKnByaW1pdGl2ZVZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVB
S19BRlRFUjoKICAgICB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhf
VkFMVUUocGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVha0FmdGVyLCBQYWdlQnJlYWspCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAg
ICAgICAgICAgICAgc3R5bGUtPnNldFBhZ2VCcmVha0FmdGVyKFBCQVVUTyk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfTEVGVDoKLSAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9SSUdIVDoKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BTFdBWVM6Ci0g
ICAgICAgICAgICAgICAgc3R5bGUtPnNldFBhZ2VCcmVha0FmdGVyKFBCQUxXQVlTKTsgLy8gQ1NT
Mi4xOiAiQ29uZm9ybWluZyB1c2VyIGFnZW50cyBtYXkgbWFwIGxlZnQvcmlnaHQgdG8gYWx3YXlz
LiIKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVk9J
RDoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UGFnZUJyZWFrQWZ0ZXIoUEJBVk9JRCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlKQorICAgICAgICAgICAgc3R5bGUtPnNldFBhZ2VCcmVha0FmdGVyKCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJF
QUtfSU5TSURFOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFM
VUUocGFnZUJyZWFrSW5zaWRlLCBQYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVhaykKLSAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTX1ZBTF9BVVRPKQotICAgICAgICAgICAgc3R5bGUtPnNldFBhZ2VC
cmVha0luc2lkZShQQkFVVE8pOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NfVkFMX0FWT0lEKQotICAgICAgICAgICAgc3R5bGUtPnNldFBhZ2VCcmVh
a0luc2lkZShQQkFWT0lEKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgRVBhZ2VCcmVhayBwYWdlQnJlYWsgPSAqcHJpbWl0aXZlVmFs
dWU7CisgICAgICAgIGlmIChwYWdlQnJlYWsgIT0gUEJBTFdBWVMpCisgICAgICAgICAgICBzdHls
ZS0+c2V0UGFnZUJyZWFrSW5zaWRlKHBhZ2VCcmVhayk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgQ1NTX1BST1BfUE9TSVRJT046CiAgICAgewogICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwb3NpdGlvbiwgUG9zaXRpb24pCi0gICAgICAgIGlm
KCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBFUG9zaXRpb24gcDsKLSAgICAgICAg
c3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICB7Ci0gICAgICAgIGNh
c2UgQ1NTX1ZBTF9TVEFUSUM6Ci0gICAgICAgICAgICBwID0gU3RhdGljUG9zaXRpb247Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JFTEFUSVZFOgotICAgICAgICAg
ICAgcCA9IFJlbGF0aXZlUG9zaXRpb247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDU1NfVkFMX0FCU09MVVRFOgotICAgICAgICAgICAgcCA9IEFic29sdXRlUG9zaXRpb247Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0ZJWEVEOgotICAgICAgICAg
ICAgcCA9IEZpeGVkUG9zaXRpb247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0UG9z
aXRpb24ocCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxl
LT5zZXRQb3NpdGlvbigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY2FzZSBDU1NfUFJPUF9UQUJMRV9MQVlPVVQ6IHsKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwodGFibGVMYXlvdXQsIFRhYmxlTGF5b3V0KQogCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IEVUYWJsZUxheW91dCBsID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICBpZiAobCA9PSBUQVVU
TykKKyAgICAgICAgICAgIGwgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYmxlTGF5b3V0KCk7CiAK
LSAgICAgICAgRVRhYmxlTGF5b3V0IGwgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYmxlTGF5b3V0
KCk7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICAgICAgY2FzZSBDU1NfVkFMX0ZJWEVEOgotICAgICAgICAgICAgICAgIGwgPSBURklYRUQ7Ci0g
ICAgICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCi0gICAgICAgICAgICBjYXNlIENTU19WQUxf
QVVUTzoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGFibGVMYXlvdXQobCk7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAg
IHN0eWxlLT5zZXRUYWJsZUxheW91dChsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBDU1NfUFJPUF9VTklDT0RFX0JJREk6IHsKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwodW5pY29kZUJpZGksIFVuaWNvZGVCaWRpKQotICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU19W
QUxfTk9STUFMOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRVbmljb2RlQmlkaShVQk5vcm1h
bCk7IAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0VN
QkVEOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRVbmljb2RlQmlkaShFbWJlZCk7IAotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JJRElfT1ZFUlJJ
REU6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFVuaWNvZGVCaWRpKE92ZXJyaWRlKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHN0eWxlLT5zZXRVbmljb2RlQmlkaSgqcHJp
bWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1Bf
VEVYVF9UUkFOU0ZPUk06IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4
dFRyYW5zZm9ybSwgVGV4dFRyYW5zZm9ybSkKLSAgICAgICAgCi0gICAgICAgIGlmKCFwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0dXJuOwotCi0gICAgICAgIEVUZXh0VHJhbnNmb3JtIHR0
OwotICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX0NBUElUQUxJWkU6ICB0dCA9IENBUElUQUxJWkU7ICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NfVkFMX1VQUEVSQ0FTRTogICB0dCA9IFVQUEVSQ0FTRTsgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NfVkFMX0xPV0VSQ0FTRTogICB0dCA9IExPV0VSQ0FTRTsgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NfVkFMX05PTkU6Ci0gICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAg
ICAgICAgdHQgPSBUVE5PTkU7ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUt
PnNldFRleHRUcmFuc2Zvcm0odHQpOworICAgICAgICBzdHlsZS0+c2V0VGV4dFRyYW5zZm9ybSgq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICB9CiAKICAg
ICBjYXNlIENTU19QUk9QX1ZJU0lCSUxJVFk6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh2aXNpYmlsaXR5LCBWaXNpYmlsaXR5KQotCi0gICAgICAgIHN3aXRjaChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxfSElEREVO
OgotICAgICAgICAgICAgc3R5bGUtPnNldFZpc2liaWxpdHkoSElEREVOKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRWaXNpYmlsaXR5KFZJU0lCTEUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTX1ZBTF9DT0xMQVBTRToKLSAgICAgICAgICAgIHN0eWxlLT5zZXRWaXNpYmlsaXR5KENP
TExBUFNFKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CisgICAgICAgIHN0eWxlLT5zZXRWaXNpYmlsaXR5KCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9XSElURV9TUEFDRToKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwod2hpdGVTcGFjZSwgV2hpdGVTcGFjZSkKLQotICAg
ICAgICBpZighcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLQotICAgICAgICBF
V2hpdGVTcGFjZSBzOwotICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkp
IHsKLSAgICAgICAgY2FzZSBDU1NfVkFMX19XRUJLSVRfTk9XUkFQOgotICAgICAgICAgICAgcyA9
IEtIVE1MX05PV1JBUDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxf
Tk9XUkFQOgotICAgICAgICAgICAgcyA9IE5PV1JBUDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU19WQUxfUFJFOgotICAgICAgICAgICAgcyA9IFBSRTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfUFJFX1dSQVA6Ci0gICAgICAgICAgICBzID0g
UFJFX1dSQVA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1BSRV9M
SU5FOgotICAgICAgICAgICAgcyA9IFBSRV9MSU5FOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBz
ID0gTk9STUFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUt
PnNldFdoaXRlU3BhY2Uocyk7CisgICAgICAgIHN0eWxlLT5zZXRXaGl0ZVNwYWNlKCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VO
RF9QT1NJVElPTjoKQEAgLTIzODMsMTQgKzIxNjEsMTYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgIH0KICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9S
REVSX0hPUklaT05UQUxfU1BBQ0lORzogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChob3Jpem9udGFsQm9yZGVyU3BhY2luZywgSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCi0g
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc2hvcnQgc3BhY2luZyA9ICBw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KHN0eWxlKTsKICAgICAgICAgc3R5bGUt
PnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1JERVJfVkVSVElDQUxfU1BBQ0lORzog
ewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNp
bmcsIFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkg
cmV0dXJuOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBzaG9ydCBzcGFjaW5nID0gIHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
U2hvcnQoc3R5bGUpOwogICAgICAgICBzdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNw
YWNpbmcpOwogICAgICAgICByZXR1cm47CkBAIC0yNDI2LDI3ICsyMjA2LDEzIEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICAgICAgICAg
IENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VW
YWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5h
ZGRDdXJzb3IoaW1hZ2UtPmltYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpKSwg
aW1hZ2UtPmhvdHNwb3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewotICAg
ICAgICAgICAgICAgICAgICBpbnQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50ID09IENTU19WQUxfQ09QWSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX0NPUFkpOwotICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChpZGVudCA9PSBDU1NfVkFMX05PTkUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9OT05FKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1
cnNvcikoaWRlbnQgLSBDU1NfVkFMX0FVVE8pKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQp
CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSkgewogICAg
ICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewotICAg
ICAgICAgICAgICAgIGludCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAg
ICAgICAgICAgICAgIGlmIChpZGVudCA9PSBDU1NfVkFMX0NPUFkpCi0gICAgICAgICAgICAgICAg
ICAgIHN0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX0NPUFkpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGlkZW50ID09IENTU19WQUxfTk9ORSkKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNl
dEN1cnNvcihDVVJTT1JfTk9ORSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShpZGVudCAtIENTU19WQUxfQVVUTykp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogLy8gY29sb3JzIHx8IGluaGVy
aXQKQEAgLTI0ODYsNyArMjI1Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgICAgIGNvbCA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHBy
aW1pdGl2ZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaChpZCkgeworICAgICAg
ICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQkFDS0dST1VORF9DT0xPUjoK
ICAgICAgICAgICAgIHN0eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sKTsgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1RPUF9DT0xPUjoKQEAgLTI1NTUsMTAgKzIzMjEsMTAg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47
CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHNob3J0IHdpZHRoID0gMzsKLSAgICAgICAgc3dpdGNoKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKQotICAgICAgICB7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKICAgICAgICAgY2FzZSBDU1NfVkFMX1RISU46CiAgICAgICAgICAgICB3aWR0aCA9
IDE7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI1NzUsOSArMjM0MSw4IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmKHdpZHRoIDwgMCkgcmV0dXJuOwotICAgICAgICBzd2l0Y2goaWQp
Ci0gICAgICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCkgcmV0dXJuOworICAgICAgICBzd2l0
Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX1RPUF9XSURUSDoKICAgICAg
ICAgICAgIHN0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCh3aWR0aCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI2MjEsMTEgKzIzODYsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTX1ZBTF9OT1JNQUwpewogICAgICAgICAgICAgd2lkdGggPSAwOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47
CisgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQo
c3R5bGUpOwogICAgICAgICB9Ci0gICAgICAgIHN3aXRjaChpZCkKLSAgICAgICAgeworICAgICAg
ICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfTEVUVEVSX1NQQUNJTkc6CiAg
ICAgICAgICAgICBzdHlsZS0+c2V0TGV0dGVyU3BhY2luZyh3aWR0aCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI2NDAsOTkgKzI0MDUsMzQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KGludAogCiAgICAgY2FzZSBDU1NfUFJPUF9XT1JEX0JSRUFLOiB7CiAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHdvcmRCcmVhaywgV29yZEJyZWFrKQotCi0gICAg
ICAgIEVXb3JkQnJlYWsgYjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxfQlJFQUtfQUxMOgotICAgICAgICAgICAgYiA9
IEJyZWFrQWxsV29yZEJyZWFrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
X1ZBTF9CUkVBS19XT1JEOgotICAgICAgICAgICAgYiA9IEJyZWFrV29yZEJyZWFrOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT1JNQUw6Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBiID0gTm9ybWFsV29yZEJyZWFrOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgc3R5bGUtPnNldFdvcmRCcmVhayhiKTsKKyAgICAgICAgc3R5
bGUtPnNldFdvcmRCcmVhaygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgY2FzZSBDU1NfUFJPUF9XT1JEX1dSQVA6IHsKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwod29yZFdyYXAsIFdvcmRXcmFwKQotCi0gICAgICAgIEVXb3JkV3JhcCBz
OwotICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX0JSRUFLX1dPUkQ6Ci0gICAgICAgICAgICBzID0gQnJlYWtXb3JkV3JhcDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfTk9STUFMOgotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcyA9IE5vcm1hbFdvcmRXcmFwOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHlsZS0+c2V0V29yZFdyYXAocyk7CisgICAg
ICAgIHN0eWxlLT5zZXRXb3JkV3JhcCgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX05CU1BfTU9ERToKICAgICB7CiAg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG5ic3BNb2RlLCBOQlNQTW9kZSkKLQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSByZXR1cm47Ci0KLSAgICAg
ICAgRU5CU1BNb2RlIG07Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICBjYXNlIENTU19WQUxfU1BBQ0U6Ci0gICAgICAgICAgICBtID0gU1BBQ0U7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG0gPSBOQk5PUk1BTDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXROQlNQTW9kZShtKTsKKyAgICAgICAgc3R5
bGUtPnNldE5CU1BNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTElORV9CUkVBSzoKICAgICB7CiAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGtodG1sTGluZUJyZWFrLCBLSFRNTExpbmVCcmVh
aykKLQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSByZXR1cm47Ci0K
LSAgICAgICAgRUtIVE1MTGluZUJyZWFrIGI7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU19WQUxfQUZURVJfV0hJVEVfU1BBQ0U6
Ci0gICAgICAgICAgICBiID0gQUZURVJfV0hJVEVfU1BBQ0U7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGIgPSBMQk5PUk1BTDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IHN0eWxlLT5zZXRLSFRNTExpbmVCcmVhayhiKTsKKyAgICAgICAgc3R5bGUtPnNldEtIVE1MTGlu
ZUJyZWFrKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfTUFUQ0hfTkVBUkVTVF9NQUlMX0JMT0NLUVVPVEVfQ09MT1I6
CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXRjaE5lYXJlc3RN
YWlsQmxvY2txdW90ZUNvbG9yLCBNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQotCi0g
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLQotICAgICAg
ICBFTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciBjOwotICAgICAgICBzd2l0Y2gocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NfVkFMX05PUk1BTDoK
LSAgICAgICAgICAgIGMgPSBCQ05PUk1BTDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU19WQUxfTUFUQ0g6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjID0gTUFU
Q0g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzdHlsZS0+c2V0TWF0
Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcihjKTsKKyAgICAgICAgc3R5bGUtPnNldE1hdGNo
TmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjc0MCwyOCArMjQ0MCwxNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChyZXNpemUsIFJlc2l6ZSkKIAotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSByZXR1cm47CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRVJlc2l6ZSByID0gUkVTSVpFX05P
TkU7Ci0gICAgICAgIHN3aXRjaChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICBjYXNlIENTU19WQUxfQk9USDoKLSAgICAgICAgICAgIHIgPSBSRVNJWkVfQk9USDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19WQUxfSE9SSVpPTlRBTDoKLSAgICAgICAg
ICAgIHIgPSBSRVNJWkVfSE9SSVpPTlRBTDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU19WQUxfVkVSVElDQUw6Ci0gICAgICAgICAgICByID0gUkVTSVpFX1ZFUlRJQ0FMOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgorICAgICAgICBF
UmVzaXplIHI7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1Nf
VkFMX0FVVE8pIHsKICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2RvY3Vt
ZW50LT5zZXR0aW5ncygpKQogICAgICAgICAgICAgICAgIHIgPSBzZXR0aW5ncy0+dGV4dEFyZWFz
QXJlUmVzaXphYmxlKCkgPyBSRVNJWkVfQk9USCA6IFJFU0laRV9OT05FOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9OT05FOgotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgciA9IFJFU0laRV9OT05FOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAg
ICAgICAgCiAgICAgICAgIHN0eWxlLT5zZXRSZXNpemUocik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yNzY5LDcgKzI0NTcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgLy8gbGVuZ3RoLCBwZXJjZW50CiAgICAgY2FzZSBDU1NfUFJPUF9NQVhf
V0lEVEg6CiAgICAgICAgIC8vICtub25lICtpbmhlcml0Ci0gICAgICAgIGlmKHByaW1pdGl2ZVZh
bHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfTk9ORSkKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U19WQUxfTk9ORSkKICAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKICAgICBjYXNlIENTU19QUk9Q
X1RPUDoKICAgICBjYXNlIENTU19QUk9QX0xFRlQ6CkBAIC0yODQyLDExICsyNTMwLDExIEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKIAogICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7CiAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZih0eXBlID4gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RFRykKKyAgICAgICAgICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKICAgICAgICAgICAg
ICAgICAvLyBIYW5kbGUgb3VyIHF1aXJreSBtYXJnaW4gdW5pdHMgaWYgd2UgaGF2ZSB0aGVtLgog
ICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJ
bnRGb3JMZW5ndGgoc3R5bGUpLCBGaXhlZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmltaXRpdmVWYWx1ZS0+aXNRdWlya1ZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZih0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICAg
ICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NTcs
OSArMjU0NSw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhcHBseSA9IHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgaWYoIWFwcGx5KSByZXR1cm47Ci0gICAgICAgIHN3aXRjaChpZCkKLSAgICAgICAg
ICAgIHsKKyAgICAgICAgaWYgKCFhcHBseSkgcmV0dXJuOworICAgICAgICBzd2l0Y2ggKGlkKSB7
CiAgICAgICAgICAgICBjYXNlIENTU19QUk9QX01BWF9XSURUSDoKICAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0TWF4V2lkdGgobCk7IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9C
T1RUT006CkBAIC0yOTUxLDEyICsyNjM4LDEyIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eShpbnQKIAogICAgIGNhc2UgQ1NTX1BST1BfVkVSVElDQUxfQUxJR046CiAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZlcnRpY2FsQWxpZ24sIFZlcnRpY2FsQWxp
Z24pCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKKyAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgRVZlcnRpY2FsQWxpZ24gYWxpZ247CiAK
LSAgICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAg
ICB7CisgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9UT1A6CiAgICAgICAgICAgICAgICAgICAgIGFsaWdu
ID0gVE9QOyBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQk9UVE9NOgpAQCAt
Mjk4Myw5ICsyNjcwLDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUt
PnByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICBMZW5ndGggbDsKLSAgICAgICAgICBpZih0eXBl
ID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0RFRykKKyAgICAgICAgICBpZiAodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpCiAg
ICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKHN0eWxlKSwgRml4ZWQpOwotICAgICAgICAgIGVsc2UgaWYodHlwZSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgICAgICBsID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKIAogICAgICAgICAg
IHN0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7CkBAIC0zMDQ5LDcgKzI3MzYsNyBAQCB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FWFMpKTsKICAgICAgICAgICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKICAgICAg
ICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChwYXJl
bnRTdHlsZSwgZmFsc2UpOwotICAgICAgICAgICAgZWxzZSBpZih0eXBlID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICAgICAgICAgIHNpemUgPSAo
cHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAwLjBmOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxMDQsNyArMjc5MSw4
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENT
U19QUk9QX0xJTkVfSEVJR0hUOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwobGluZUhlaWdodCwgTGluZUhlaWdodCkKLSAgICAgICAgaWYoIXByaW1pdGl2ZVZhbHVl
KSByZXR1cm47CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX05PUk1BTCkKQEAgLTMxMzUsMTEgKzI4MjMsMTEgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKICAgICAgICAg
aWYgKGlkID09IENTU19WQUxfU1RBUlQpCi0gICAgICAgICAgICBpZCA9IHN0eWxlLT5kaXJlY3Rp
b24oKSA9PSBMVFIgPyBDU1NfVkFMX0xFRlQgOiBDU1NfVkFMX1JJR0hUOworICAgICAgICAgICAg
c3R5bGUtPnNldFRleHRBbGlnbihzdHlsZS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gTEVGVCA6IFJJ
R0hUKTsKICAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTX1ZBTF9FTkQpCi0gICAgICAgICAgICBp
ZCA9IHN0eWxlLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBDU1NfVkFMX1JJR0hUIDogQ1NTX1ZBTF9M
RUZUOwotICAgICAgICAKLSAgICAgICAgc3R5bGUtPnNldFRleHRBbGlnbigoRVRleHRBbGlnbikg
KGlkIC0gQ1NTX1ZBTF9fV0VCS0lUX0FVVE8pKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0
QWxpZ24oc3R5bGUtPmRpcmVjdGlvbigpID09IExUUiA/IFJJR0hUIDogTEVGVCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHN0eWxlLT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzI5Miw5ICsyOTgwLDkgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBib29sIG9sZEZhbWlseUlz
TW9ub3NwYWNlID0gZm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSA9PSBGb250RGVzY3Jp
cHRpb246Ok1vbm9zcGFjZUZhbWlseTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVy
aWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7CiAKLSAgICAgICAgZm9yKGludCBp
ID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBp
KyspIHsKICAgICAgICAgICAgIENTU1ZhbHVlICppdGVtID0gbGlzdC0+aXRlbShpKTsKLSAgICAg
ICAgICAgIGlmKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIGNvbnRpbnVlOworICAgICAgICAg
ICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIGNvbnRpbnVlOwogICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUgKnZhbCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
aXRlbSk7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKICAgICAgICAgICAgIFNldHRp
bmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CkBAIC0zMzU0LDE5ICszMDQy
LDE4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
Ly8gbGlzdCBvZiBpZGVudAogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0
RGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb24pCiAgICAgICAgIGludCB0ID0gUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgICAgICBpZihwcmltaXRpdmVWYWx1ZSAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NfVkFMX05PTkUpIHsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxf
Tk9ORSkgewogICAgICAgICAgICAgLy8gZG8gbm90aGluZwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKSByZXR1cm47CisgICAgICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKSByZXR1cm47CiAgICAgICAgICAgICBDU1NWYWx1ZUxp
c3QgKmxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CiAgICAgICAgICAg
ICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBp
IDwgbGVuOyBpKyspCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENTU1ZhbHVlICppdGVtID0gbGlzdC0+aXRl
bShpKTsKLSAgICAgICAgICAgICAgICBpZighaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKSBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgICAgIHN3aXRjaChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU19WQUxfTk9ORToKICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBURE5PTkU7IGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfVU5ERVJMSU5FOgpAQCAtMzU3
MiwxNCArMzI1OSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICAvLyBDU1MzIFByb3BlcnRpZXMKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQVBQRUFS
QU5DRTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChhcHBlYXJhbmNlLCBB
cHBlYXJhbmNlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSBicmVhazsKLSAgICAgICAg
aW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgIEVBcHBlYXJhbmNl
IGFwcGVhcmFuY2U7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PTkUpCi0gICAgICAgICAg
ICBhcHBlYXJhbmNlID0gTm9BcHBlYXJhbmNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
cHBlYXJhbmNlID0gRUFwcGVhcmFuY2UoaWQgLSBDU1NfVkFMX0NIRUNLQk9YICsgMSk7Ci0gICAg
ICAgIHN0eWxlLT5zZXRBcHBlYXJhbmNlKGFwcGVhcmFuY2UpOworICAgICAgICBpZiAoIXByaW1p
dGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdHlsZS0+c2V0QXBwZWFy
YW5jZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ug
Q1NTX1BST1BfX1dFQktJVF9CSU5ESU5HOiB7CkBAIC0zNzkzLDczICszNDc1LDM2IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgQ1NTX1BST1BfX1dFQktJVF9CT1hfQUxJR046CiAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGJveEFsaWduLCBCb3hBbGlnbikKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfU1RSRVRDSDoKLSAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0Qm94QWxpZ24oQlNUUkVUQ0gpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NfVkFMX1NUQVJUOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRC
b3hBbGlnbihCU1RBUlQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX0VORDoKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm94QWxpZ24oQkVORCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQ0VOVEVS
OgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hBbGlnbihCQ0VOVEVSKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9CQVNFTElORToKLSAgICAg
ICAgICAgICAgICBzdHlsZS0+c2V0Qm94QWxpZ24oQkJBU0VMSU5FKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ25tZW50ID0gKnByaW1pdGl2ZVZhbHVl
OworICAgICAgICBpZiAoYm94QWxpZ25tZW50ICE9IEJKVVNUSUZZKQorICAgICAgICAgICAgc3R5
bGUtPnNldEJveEFsaWduKGJveEFsaWdubWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IENTU19QUk9QX1NSQzogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX0RJUkVDVElPTjoKICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94RGlyZWN0aW9uLCBCb3hEaXJlY3Rpb24p
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfTk9STUFMKQotICAgICAgICAgICAgc3R5
bGUtPnNldEJveERpcmVjdGlvbihCTk9STUFMKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3R5bGUtPnNldEJveERpcmVjdGlvbihCUkVWRVJTRSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hEaXJlY3Rpb24oKnByaW1pdGl2ZVZhbHVl
KTsKICAgICAgICAgcmV0dXJuOyAgICAgICAgCiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX0JP
WF9MSU5FUzoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94TGluZXMsIEJv
eExpbmVzKQotICAgICAgICBpZighcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfU0lOR0xFKQotICAgICAgICAg
ICAgc3R5bGUtPnNldEJveExpbmVzKFNJTkdMRSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHN0eWxlLT5zZXRCb3hMaW5lcyhNVUxUSVBMRSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hMaW5lcygqcHJpbWl0aXZlVmFsdWUpOwogICAg
ICAgICByZXR1cm47ICAgICAKICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfQk9YX09SSUVOVDoK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94T3JpZW50LCBCb3hPcmllbnQp
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfSE9SSVpPTlRBTCB8fAotICAgICAgICAg
ICAgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTX1ZBTF9JTkxJTkVfQVhJUykKLSAg
ICAgICAgICAgIHN0eWxlLT5zZXRCb3hPcmllbnQoSE9SSVpPTlRBTCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0eWxlLT5zZXRCb3hPcmllbnQoVkVSVElDQUwpOworICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0Qm94T3JpZW50KCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsgICAgIAogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJ
VF9CT1hfUEFDSzoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94UGFjaywg
Qm94UGFjaykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOwotICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENT
U19WQUxfU1RBUlQ6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEJveFBhY2soQlNUQVJUKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9FTkQ6Ci0g
ICAgICAgICAgICAgICAgc3R5bGUtPnNldEJveFBhY2soQkVORCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQ0VOVEVSOgotICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRCb3hQYWNrKEJDRU5URVIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NfVkFMX0pVU1RJRlk6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNl
dEJveFBhY2soQkpVU1RJRlkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRUJveEFsaWdu
bWVudCBib3hQYWNrID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICBpZiAoYm94UGFjayAhPSBC
U1RSRVRDSCAmJiBib3hQYWNrICE9IEJCQVNFTElORSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRC
b3hQYWNrKGJveFBhY2spOwogICAgICAgICByZXR1cm47ICAgICAgICAKICAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfQk9YX0ZMRVg6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KGJveEZsZXgsIEJveEZsZXgpCkBAIC0zODgxLDcgKzM1MjYsOCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU19Q
Uk9QX19XRUJLSVRfQk9YX1NJWklORzoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoYm94U2l6aW5nLCBCb3hTaXppbmcpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHJl
dHVybjsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU19WQUxfQ09OVEVO
VF9CT1gpCiAgICAgICAgICAgICBzdHlsZS0+c2V0Qm94U2l6aW5nKENPTlRFTlRfQk9YKTsKICAg
ICAgICAgZWxzZQpAQCAtMzkzMSw0OCArMzU3NywyMyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9DT0xV
TU5fUlVMRV9TVFlMRToKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9W
QUxVRShjb2x1bW5SdWxlU3R5bGUsIENvbHVtblJ1bGVTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAg
ICAgIHN0eWxlLT5zZXRDb2x1bW5SdWxlU3R5bGUoKEVCb3JkZXJTdHlsZSkocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgLSBDU1NfVkFMX05PTkUpKTsKKyAgICAgICAgc3R5bGUtPnNldENvbHVt
blJ1bGVTdHlsZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9CUkVBS19CRUZPUkU6IHsKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShjb2x1bW5CcmVha0JlZm9yZSwgQ29sdW1uQnJl
YWtCZWZvcmUsIFBhZ2VCcmVhaykKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAg
ICAgc3R5bGUtPnNldENvbHVtbkJyZWFrQmVmb3JlKFBCQVVUTyk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfTEVGVDoKLSAgICAgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9SSUdIVDoKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BTFdBWVM6Ci0gICAgICAg
ICAgICAgICAgc3R5bGUtPnNldENvbHVtbkJyZWFrQmVmb3JlKFBCQUxXQVlTKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVk9JRDoKLSAgICAgICAg
ICAgICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtCZWZvcmUoUEJBVk9JRCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgc3R5bGUtPnNldENvbHVtbkJyZWFrQmVm
b3JlKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBD
U1NfUFJPUF9fV0VCS0lUX0NPTFVNTl9CUkVBS19BRlRFUjogewogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrQWZ0ZXIsIENvbHVtbkJyZWFr
QWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAg
c3R5bGUtPnNldENvbHVtbkJyZWFrQWZ0ZXIoUEJBVVRPKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9MRUZUOgotICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX1JJR0hUOgotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FMV0FZUzoKLSAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtBZnRlcihQQkFMV0FZUyk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQVZPSUQ6Ci0gICAgICAgICAgICAg
ICAgc3R5bGUtPnNldENvbHVtbkJyZWFrQWZ0ZXIoUEJBVk9JRCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgc3R5bGUtPnNldENvbHVtbkJyZWFrQWZ0ZXIoKnBy
aW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfQ09MVU1OX0JSRUFLX0lOU0lERTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrSW5zaWRlLCBDb2x1bW5CcmVha0luc2lk
ZSwgUGFnZUJyZWFrKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTX1ZBTF9BVVRPKQotICAgICAgICAgICAgc3R5bGUtPnNldENvbHVtbkJyZWFrSW5zaWRlKFBC
QVVUTyk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U19WQUxfQVZPSUQpCi0gICAgICAgICAgICBzdHlsZS0+c2V0Q29sdW1uQnJlYWtJbnNpZGUoUEJB
Vk9JRCk7CisgICAgICAgIEVQYWdlQnJlYWsgcGIgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAg
IGlmIChwYiAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDb2x1bW5CcmVha0lu
c2lkZShwYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgIGNhc2UgQ1NTX1BST1BfX1dF
QktJVF9DT0xVTU5fUlVMRToKQEAgLTQwMDYsNyArMzYyNyw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTX1BS
T1BfX1dFQktJVF9NQVJRVUVFX1JFUEVUSVRJT046IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwobWFycXVlZUxvb3BDb3VudCwgTWFycXVlZUxvb3BDb3VudCkKLSAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0dXJuOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTX1ZBTF9JTkZJTklURSkKICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVl
TG9vcENvdW50KC0xKTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2ZXIuCiAgICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpCkBAIC00MDE1LDEwICszNjM3LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX01B
UlFVRUVfU1BFRUQ6IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVl
ZVNwZWVkLCBNYXJxdWVlU3BlZWQpICAgICAgCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
IHJldHVybjsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9TTE9XOgogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
TWFycXVlZVNwZWVkKDUwMCk7IC8vIDUwMCBtc2VjLgogICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTQwNDAsMTAgKzM2NjIsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgIH0KICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFSUVVFRV9JTkNS
RU1FTlQ6IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUluY3Jl
bWVudCwgTWFycXVlZUluY3JlbWVudCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkgcmV0
dXJuOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NfVkFMX1NNQUxMOgogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFy
cXVlZUluY3JlbWVudChMZW5ndGgoMSwgRml4ZWQpKTsgLy8gMXB4LgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTQwNjUsOTcgKzM2ODcsMzIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgIH0KICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfTUFS
UVVFRV9TVFlMRTogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVl
QmVoYXZpb3IsIE1hcnF1ZWVCZWhhdmlvcikgICAgICAKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLSAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX05PTkU6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVCZWhh
dmlvcihNTk9ORSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENT
U19WQUxfU0NST0xMOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3Io
TVNDUk9MTCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19W
QUxfU0xJREU6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihNU0xJ
REUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FM
VEVSTkFURToKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKE1BTFRF
Uk5BVEUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IoKnBy
aW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU19QUk9Q
X19XRUJLSVRfTUFSUVVFRV9ESVJFQ1RJT046IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsK
LSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0ZPUldBUkRTOgotICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1GT1JXQVJEKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9CQUNLV0FSRFM6Ci0gICAgICAgICAgICAgICAgc3R5
bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTUJBQ0tXQVJEKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BVVRPOgotICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1BVVRPKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BSEVBRDoKLSAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9V
UDogLy8gV2UgZG9uJ3Qgc3VwcG9ydCB2ZXJ0aWNhbCBsYW5ndWFnZXMsIHNvIEFIRUFEIGp1c3Qg
bWFwcyB0byBVUC4KLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihN
VVApOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1JF
VkVSU0U6Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRE9XTjogLy8gUkVWRVJTRSBqdXN0IG1h
cHMgdG8gRE9XTiwgc2luY2Ugd2UgZG9uJ3QgZG8gdmVydGljYWwgdGV4dC4KLSAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNRE9XTik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfTEVGVDoKLSAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfUklHSFQ6Ci0gICAgICAgICAgICAgICAgc3R5bGUt
PnNldE1hcnF1ZWVEaXJlY3Rpb24oTVJJR0hUKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+
c2V0TWFycXVlZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9VU0VSX0RSQUc6IHsKICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodXNlckRyYWcsIFVzZXJEcmFnKSAgICAgIAotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAg
c3R5bGUtPnNldFVzZXJEcmFnKERSQUdfQVVUTyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
VXNlckRyYWcoRFJBR19OT05FKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9FTEVNRU5UOgotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRVc2VyRHJh
ZyhEUkFHX0VMRU1FTlQpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGUtPnNldFVzZXJEcmFnKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1VTRVJfTU9ESUZZOiB7CiAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHVzZXJNb2RpZnksIFVzZXJNb2RpZnkpICAgICAg
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBFVXNlck1vZGlmeSB1c2VyTW9kaWZ5
ID0gRVVzZXJNb2RpZnkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX1JFQURf
T05MWSk7Ci0gICAgICAgIHN0eWxlLT5zZXRVc2VyTW9kaWZ5KHVzZXJNb2RpZnkpOworICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0VXNlck1vZGlmeSgq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BS
T1BfX1dFQktJVF9VU0VSX1NFTEVDVDogewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTCh1c2VyU2VsZWN0LCBVc2VyU2VsZWN0KSAgICAgIAotICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFVzZXJT
ZWxlY3QoU0VMRUNUX1RFWFQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX05PTkU6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFVzZXJTZWxlY3Qo
U0VMRUNUX05PTkUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NfVkFMX1RFWFQ6Ci0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFVzZXJTZWxlY3QoU0VMRUNU
X1RFWFQpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgc3R5bGUt
PnNldFVzZXJTZWxlY3QoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIENTU19QUk9QX1RFWFRfT1ZFUkZMT1c6IHsKQEAgLTQxODAsNDMgKzM3MzcsMjIg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIH0KICAgICBj
YXNlIENTU19QUk9QX19XRUJLSVRfTUFSR0lOX1RPUF9DT0xMQVBTRTogewogICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJnaW5Ub3BDb2xsYXBzZSwgTWFyZ2luVG9wQ29sbGFw
c2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSByZXR1cm47Ci0gICAgICAgIEVNYXJnaW5Db2xsYXBzZSB2YWw7Ci0gICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NT
X1ZBTF9TRVBBUkFURToKLSAgICAgICAgICAgICAgICB2YWwgPSBNU0VQQVJBVEU7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRElTQ0FSRDoKLSAgICAg
ICAgICAgICAgICB2YWwgPSBNRElTQ0FSRDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdmFsID0gTUNPTExBUFNFOwotICAgICAg
ICB9Ci0gICAgICAgIHN0eWxlLT5zZXRNYXJnaW5Ub3BDb2xsYXBzZSh2YWwpOworICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0TWFyZ2luVG9wQ29sbGFw
c2UoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENT
U19QUk9QX19XRUJLSVRfTUFSR0lOX0JPVFRPTV9DT0xMQVBTRTogewogICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChtYXJnaW5Cb3R0b21Db2xsYXBzZSwgTWFyZ2luQm90dG9tQ29s
bGFwc2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSByZXR1cm47Ci0gICAgICAgIEVNYXJnaW5Db2xsYXBzZSB2YWw7Ci0gICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9TRVBBUkFURToKLSAgICAgICAgICAgICAgICB2YWwgPSBNU0VQQVJBVEU7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRElTQ0FSRDoKLSAg
ICAgICAgICAgICAgICB2YWwgPSBNRElTQ0FSRDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdmFsID0gTUNPTExBUFNFOwotICAg
ICAgICB9Ci0gICAgICAgIHN0eWxlLT5zZXRNYXJnaW5Cb3R0b21Db2xsYXBzZSh2YWwpOworICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZS0+c2V0TWFyZ2luQm90
dG9tQ29sbGFwc2UoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIC8vIEFwcGxlLXNwZWNpZmljIGNoYW5nZXMuICBEbyBub3QgbWVyZ2UgdGhlc2UgcHJvcGVy
dGllcyBpbnRvIEtIVE1MLgogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9MSU5FX0NMQU1QOiB7
CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpbmVDbGFtcCwgTGluZUNsYW1w
KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHN0eWxlLT5zZXRMaW5l
Q2xhbXAocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI0NSwyMSArMzc4MSw4
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICB9CiAgICAg
Y2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU0VDVVJJVFk6IHsKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwodGV4dFNlY3VyaXR5LCBUZXh0U2VjdXJpdHkpCi0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEVUZXh0U2Vj
dXJpdHkgdGV4dFNlY3VyaXR5ID0gVFNOT05FOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfRElTQzoKLSAgICAg
ICAgICAgICAgICB0ZXh0U2VjdXJpdHkgPSBUU0RJU0M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU19WQUxfQ0lSQ0xFOgotICAgICAgICAgICAgICAgIHRleHRT
ZWN1cml0eSA9IFRTQ0lSQ0xFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX1NRVUFSRToKLSAgICAgICAgICAgICAgICB0ZXh0U2VjdXJpdHk9IFRTU1FV
QVJFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHN0eWxlLT5z
ZXRUZXh0U2VjdXJpdHkodGV4dFNlY3VyaXR5KTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
KQorICAgICAgICAgICAgc3R5bGUtPnNldFRleHRTZWN1cml0eSgqcHJpbWl0aXZlVmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9EQVNIQk9B
UkRfUkVHSU9OOiB7CkBAIC00MjY3LDcgKzM3OTAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTX1ZBTF9OT05FKSB7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NfVkFMX05PTkUpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXREYXNoYm9hcmRSZWdpb25z
KFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtNDM3NSw3ICszODk4LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjptYXBCYWNrZ3JvdW5kQXR0YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSByZXR1cm47CisgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAg
ICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAgICAgICBjYXNlIENT
U19WQUxfRklYRUQ6CkBAIC00Mzk2LDE5ICszOTIwLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWFwQmFja2dyb3VuZENsaXAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgcmV0dXJuOworICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBD
U1NfVkFMX0JPUkRFUjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ2xpcChCR0JP
UkRFUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1BBRERJTkc6
Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENsaXAoQkdQQURESU5HKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAvLyBDU1NfVkFMX0NPTlRFTlQKLSAgICAg
ICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ2xpcChCR0NPTlRFTlQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQorICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ2xpcCgqcHJpbWl0aXZlVmFs
dWUpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRDb21wb3NpdGUo
QmFja2dyb3VuZExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQpAQCAtNDQyMSw1MiArMzkz
Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZENvbXAKICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKLSAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAg
ICAgICAgY2FzZSBDU1NfVkFMX0NMRUFSOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91
bmRDb21wb3NpdGUoQ29tcG9zaXRlQ2xlYXIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTX1ZBTF9DT1BZOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21w
b3NpdGUoQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NfVkFMX1NPVVJDRV9PVkVSOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21w
b3NpdGUoQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NfVkFMX1NPVVJDRV9JTjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5k
Q29tcG9zaXRlKENvbXBvc2l0ZVNvdXJjZUluKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENTU19WQUxfU09VUkNFX09VVDoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29tcG9zaXRlKENvbXBvc2l0ZVNvdXJjZU91dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NfVkFMX1NPVVJDRV9BVE9QOgotICAgICAgICAgICAgbGF5ZXItPnNldEJh
Y2tncm91bmRDb21wb3NpdGUoQ29tcG9zaXRlU291cmNlQXRvcCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NfVkFMX0RFU1RJTkFUSU9OX09WRVI6Ci0gICAgICAgICAgICBs
YXllci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9ERVNUSU5BVElPTl9JTjoK
LSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29tcG9zaXRlKENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9ERVNU
SU5BVElPTl9PVVQ6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShD
b21wb3NpdGVEZXN0aW5hdGlvbk91dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDU1NfVkFMX0RFU1RJTkFUSU9OX0FUT1A6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFja2dy
b3VuZENvbXBvc2l0ZShDb21wb3NpdGVEZXN0aW5hdGlvbkF0b3ApOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9YT1I6Ci0gICAgICAgICAgICBsYXllci0+c2V0QmFj
a2dyb3VuZENvbXBvc2l0ZShDb21wb3NpdGVYT1IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTX1ZBTF9QTFVTX0RBUktFUjoKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29tcG9zaXRlKENvbXBvc2l0ZVBsdXNEYXJrZXIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9ISUdITElHSFQ6Ci0gICAgICAgICAgICBsYXllci0+c2V0
QmFja2dyb3VuZENvbXBvc2l0ZShDb21wb3NpdGVIaWdobGlnaHQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTX1ZBTF9QTFVTX0xJR0hURVI6Ci0gICAgICAgICAgICBsYXll
ci0+c2V0QmFja2dyb3VuZENvbXBvc2l0ZShDb21wb3NpdGVQbHVzTGlnaHRlcik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb21wb3NpdGUoKnByaW1pdGl2ZVZhbHVlKTsKIH0K
IAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kT3JpZ2luKEJhY2tncm91bmRM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKQEAgLTQ0NzYsMTkgKzM5NDYsMTAgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kT3JpZwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSByZXR1cm47CisgICAg
aWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CiAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICBjYXNlIENTU19WQUxfQk9SREVSOgotICAgICAgICAgICAgbGF5ZXItPnNldEJh
Y2tncm91bmRPcmlnaW4oQkdCT1JERVIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTX1ZBTF9QQURESU5HOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRPcmln
aW4oQkdQQURESU5HKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAvLyBD
U1NfVkFMX0NPTlRFTlQKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kT3JpZ2luKEJH
Q09OVEVOVCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9CisgICAgbGF5ZXItPnNldEJhY2tn
cm91bmRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjptYXBCYWNrZ3JvdW5kSW1hZ2UoQmFja2dyb3VuZExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQpAQCAtNDUxMywyMiArMzk3NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFj
a2dyb3VuZFJlcGUKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBzd2l0Y2gocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JFUEVBVDoKLSAgICAgICAg
ICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kUmVwZWF0KFJFUEVBVCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NfVkFMX1JFUEVBVF9YOgotICAgICAgICAgICAgbGF5ZXItPnNl
dEJhY2tncm91bmRSZXBlYXQoUkVQRUFUX1gpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTX1ZBTF9SRVBFQVRfWToKLSAgICAgICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5k
UmVwZWF0KFJFUEVBVF9ZKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU19W
QUxfTk9fUkVQRUFUOgotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tncm91bmRSZXBlYXQoTk9f
UkVQRUFUKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBsYXllci0+c2V0QmFja2dyb3VuZFJlcGVhdCgqcHJpbWl0
aXZlVmFsdWUpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEJhY2tncm91bmRTaXpl
KEJhY2tncm91bmRMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKQEAgLTQ1OTMsOSArNDAz
OSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQmFja2dyb3VuZFhQb3MKICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKICAgICBMZW5ndGggbDsKICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgaWYodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpCisgICAg
aWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQogICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKSwgRml4ZWQpOwotICAgIGVsc2Ug
aWYodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgZWxzZSBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgIGwg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAg
IGVsc2UKICAgICAgICAgcmV0dXJuOwpAQCAtNDYxNCw5ICs0MDYwLDkgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXBCYWNrZ3JvdW5kWVBvcwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAg
IExlbmd0aCBsOwogICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKLSAgICBpZih0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5
cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICBpZiAodHlwZSA+IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ERUcpCiAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJ
bnRGb3JMZW5ndGgoc3R5bGUpLCBGaXhlZCk7Ci0gICAgZWxzZSBpZih0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm47CkluZGV4OiBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2NjUzKQorKysgV2ViQ29yZS9rc3ZnMi9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFw
QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDEwICsyMiw5IEBACiAjaWYg
RU5BQkxFKFNWRykKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKIAor
I2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIApAQCAtNDcsMjAwICs0Nyw0NiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIHN3aXRjaCAoc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpIHsKLSAgICAgICAgY2FzZSBDU1NfUFJP
UF9DTElQX1JVTEU6IHsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS0+Y2xpcFJ1bGUoKSA9PSBS
VUxFX05PTlpFUk8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX05PTlpFUk8pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FVkVOT0REKTsKLSAgICAgICAgfQor
ICAgICAgICBjYXNlIENTU19QUk9QX0NMSVBfUlVMRToKKyAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmNsaXBSdWxlKCkpOwogICAgICAgICBjYXNlIENT
U19QUk9QX0ZMT09EX09QQUNJVFk6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHN2Z1N0eWxlLT5mbG9vZE9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwogICAgICAgICBjYXNlIENTU19QUk9QX1NUT1BfT1BBQ0lUWToKICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPnN0b3BPcGFjaXR5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9QT0lO
VEVSX0VWRU5UUzogewotICAgICAgICAgICAgc3dpdGNoIChzdmdTdHlsZS0+cG9pbnRlckV2ZW50
cygpKSB7Ci0gICAgICAgICAgICBjYXNlIFBFX05PTkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PTkUpOwotICAgICAgICAgICAgY2FzZSBQ
RV9TVFJPS0U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX1NUUk9LRSk7Ci0gICAgICAgICAgICBjYXNlIFBFX0ZJTEw6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0ZJTEwpOwotICAgICAgICAg
ICAgY2FzZSBQRV9QQUlOVEVEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9QQUlOVEVEKTsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRToK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVklT
SUJMRSk7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfU1RST0tFOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxFU1RST0tFKTsK
LSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9GSUxMOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9WSVNJQkxFRklMTCk7Ci0gICAgICAgICAg
ICBjYXNlIFBFX1ZJU0lCTEVfUEFJTlRFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfVklTSUJMRVBBSU5URUQpOwotICAgICAgICAgICAgY2Fz
ZSBQRV9BTEw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX0FMTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1Nf
UFJPUF9DT0xPUl9JTlRFUlBPTEFUSU9OOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmNv
bG9ySW50ZXJwb2xhdGlvbigpID09IENJX0FVVE8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgZWxzZSBpZiAo
c3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENJX1NSR0IpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1NSR0IpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
X1ZBTF9MSU5FQVJSR0IpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfQ09MT1Jf
SU5URVJQT0xBVElPTl9GSUxURVJTOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUtPmNvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDSV9BVVRPKQotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHN2Z1N0eWxlLT5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ0lfU1JHQikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1JHQik7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX0xJTkVBUlJHQik7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9QT0lOVEVSX0VWRU5UUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3ZnU3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1Bf
Q09MT1JfSU5URVJQT0xBVElPTjoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xhdGlvbigpKTsKKyAgICAgICAgY2FzZSBDU1Nf
UFJPUF9DT0xPUl9JTlRFUlBPTEFUSU9OX0ZJTFRFUlM6CisgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkp
OwogICAgICAgICBjYXNlIENTU19QUk9QX0ZJTExfT1BBQ0lUWToKICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmZpbGxPcGFjaXR5KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9GSUxMX1JVTEU6
IHsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS0+ZmlsbFJ1bGUoKSA9PSBSVUxFX05PTlpFUk8p
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05P
TlpFUk8pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9FVkVOT0REKTsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IENTU19QUk9QX0NPTE9SX1JFTkRFUklORzogewotICAgICAgICAgICAgaWYgKHN2Z1N0eWxlLT5j
b2xvclJlbmRlcmluZygpID09IENSX0FVVE8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBD
U1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgZWxzZSBpZiAoc3Zn
U3R5bGUtPmNvbG9yUmVuZGVyaW5nKCkgPT0gQ1JfT1BUSU1JWkVTUEVFRCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1BUSU1JWkVTUEVFRCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRp
dmVWYWx1ZShDU1NfVkFMX09QVElNSVpFUVVBTElUWSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBDU1NfUFJPUF9JTUFHRV9SRU5ERVJJTkc6IHsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS0+
aW1hZ2VSZW5kZXJpbmcoKSA9PSBJUl9BVVRPKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BVVRPKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN2
Z1N0eWxlLT5pbWFnZVJlbmRlcmluZygpID09IElSX09QVElNSVpFU1BFRUQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX09QVElNSVpFU1BFRUQp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9PUFRJTUlaRVFVQUxJVFkpOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ1NTX1BST1BfU0hBUEVfUkVOREVSSU5HOiB7Ci0gICAgICAgICAgICBpZiAoc3ZnU3R5bGUt
PnNoYXBlUmVuZGVyaW5nKCkgPT0gU1JfQVVUTykKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBlbHNlIGlmIChz
dmdTdHlsZS0+c2hhcGVSZW5kZXJpbmcoKSA9PSBTUl9PUFRJTUlaRVNQRUVEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9PUFRJTUlaRVNQRUVE
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN2Z1N0eWxlLT5zaGFwZVJlbmRlcmluZygpID09IFNS
X0NSSVNQRURHRVMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0NSSVNQRURHRVMpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9HRU9NRVRSSUNQUkVDSVNJT04p
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTX1BST1BfU1RST0tFX0xJTkVDQVA6IHsKLSAg
ICAgICAgICAgIGlmIChzdmdTdHlsZS0+Y2FwU3R5bGUoKSA9PSBCdXR0Q2FwKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CVVRUKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHN2Z1N0eWxlLT5jYXBTdHlsZSgpID09IFJvdW5kQ2FwKQotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9ST1VORCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1NRVUFSRSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9T
VFJPS0VfTElORUpPSU46IHsKLSAgICAgICAgICAgIGlmIChzdmdTdHlsZS0+am9pblN0eWxlKCkg
PT0gTWl0ZXJKb2luKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9NSVRFUik7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdmdTdHlsZS0+am9pblN0
eWxlKCkgPT0gUm91bmRKb2luKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9ST1VORCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JFVkVMKTsKLSAgICAgICAg
fQorICAgICAgICBjYXNlIENTU19QUk9QX0ZJTExfUlVMRToKKyAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmZpbGxSdWxlKCkpOworICAgICAgICBjYXNl
IENTU19QUk9QX0NPTE9SX1JFTkRFUklORzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmNvbG9yUmVuZGVyaW5nKCkpOworICAgICAgICBjYXNlIENT
U19QUk9QX0lNQUdFX1JFTkRFUklORzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoc3ZnU3R5bGUtPmltYWdlUmVuZGVyaW5nKCkpOworICAgICAgICBjYXNlIENTU19Q
Uk9QX1NIQVBFX1JFTkRFUklORzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoc3ZnU3R5bGUtPnNoYXBlUmVuZGVyaW5nKCkpOworICAgICAgICBjYXNlIENTU19QUk9Q
X1NUUk9LRV9MSU5FQ0FQOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShzdmdTdHlsZS0+Y2FwU3R5bGUoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfU1RST0tFX0xJ
TkVKT0lOOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdmdTdHls
ZS0+am9pblN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX1NUUk9LRV9NSVRFUkxJTUlU
OgogICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS0+c3Ry
b2tlTWl0ZXJMaW1pdCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAg
IGNhc2UgQ1NTX1BST1BfU1RST0tFX09QQUNJVFk6CiAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLT5zdHJva2VPcGFjaXR5KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKLSAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX1JFTkRFUklORzog
ewotICAgICAgICAgICAgc3dpdGNoIChzdmdTdHlsZS0+dGV4dFJlbmRlcmluZygpKSB7Ci0gICAg
ICAgICAgICBjYXNlIFRSX0FVVE86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pOwotICAgICAgICAgICAgY2FzZSBUUl9PUFRJTUlaRVNQ
RUVEOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZB
TF9PUFRJTUlaRVNQRUVEKTsKLSAgICAgICAgICAgIGNhc2UgVFJfT1BUSU1JWkVMRUdJQklMSVRZ
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9P
UFRJTUlaRUxFR0lCSUxJVFkpOwotICAgICAgICAgICAgY2FzZSBUUl9HRU9NRVRSSUNQUkVDSVNJ
T046Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X0dFT01FVFJJQ1BSRUNJU0lPTik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDU1NfUFJPUF9BTElHTk1FTlRfQkFTRUxJTkU6IHsKLSAgICAgICAgICAgIHN3aXRjaCAo
c3ZnU3R5bGUtPmFsaWdubWVudEJhc2VsaW5lKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQUJfQVVU
TzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
QVVUTyk7Ci0gICAgICAgICAgICBjYXNlIEFCX0JBU0VMSU5FOgotICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQVNFTElORSk7Ci0gICAgICAgICAg
ICBjYXNlIEFCX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9CRUZPUkVfRURHRSk7Ci0gICAgICAgICAgICBjYXNlIEFCX1RF
WFRfQkVGT1JFX0VER0U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1RFWFRfQkVGT1JFX0VER0UpOwotICAgICAgICAgICAgY2FzZSBBQl9NSURE
TEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X01JRERMRSk7Ci0gICAgICAgICAgICBjYXNlIEFCX0NFTlRSQUw6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0NFTlRSQUwpOwotICAgICAgICAg
ICAgY2FzZSBBQl9BRlRFUl9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9BRlRFUl9FREdFKTsKLSAgICAgICAgICAgIGNhc2UgQUJfVEVY
VF9BRlRFUl9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0UpOwotICAgICAgICAgICAgY2FzZSBBQl9JREVPR1JB
UEhJQzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfSURFT0dSQVBISUMpOwotICAgICAgICAgICAgY2FzZSBBQl9BTFBIQUJFVElDOgotICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFBIQUJFVElD
KTsKLSAgICAgICAgICAgIGNhc2UgQUJfSEFOR0lORzoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEFOR0lORyk7Ci0gICAgICAgICAgICBjYXNl
IEFCX01BVEhFTUFUSUNBTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKENTU19WQUxfTUFUSEVNQVRJQ0FMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU19QUk9QX0RPTUlOQU5UX0JBU0VMSU5FOiB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHN2Z1N0eWxlLT5kb21pbmFudEJhc2VsaW5lKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
REJfQVVUTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENT
U19WQUxfQVVUTyk7Ci0gICAgICAgICAgICBjYXNlIERCX1VTRV9TQ1JJUFQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1VTRV9TQ1JJUFQpOwot
ICAgICAgICAgICAgY2FzZSBEQl9OT19DSEFOR0U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX05PX0NIQU5HRSk7Ci0gICAgICAgICAgICBjYXNl
IERCX1JFU0VUX1NJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZShDU1NfVkFMX1JFU0VUX1NJWkUpOwotICAgICAgICAgICAgY2FzZSBEQl9DRU5UUkFMOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9DRU5U
UkFMKTsKLSAgICAgICAgICAgIGNhc2UgREJfTUlERExFOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9NSURETEUpOwotICAgICAgICAgICAgY2Fz
ZSBEQl9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFKTsKLSAgICAgICAgICAgIGNhc2Ug
REJfVEVYVF9BRlRFUl9FREdFOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0UpOwotICAgICAgICAgICAgY2FzZSBEQl9J
REVPR1JBUEhJQzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KENTU19WQUxfSURFT0dSQVBISUMpOwotICAgICAgICAgICAgY2FzZSBEQl9BTFBIQUJFVElDOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9BTFBI
QUJFVElDKTsKLSAgICAgICAgICAgIGNhc2UgREJfSEFOR0lORzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfSEFOR0lORyk7Ci0gICAgICAgICAg
ICBjYXNlIERCX01BVEhFTUFUSUNBTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKENTU19WQUxfTUFUSEVNQVRJQ0FMKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBjYXNlIENTU19QUk9QX1RFWFRfQU5DSE9SOiB7Ci0gICAgICAgICAgICBp
ZiAoc3ZnU3R5bGUtPnRleHRBbmNob3IoKSA9PSBUQV9TVEFSVCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1RBUlQpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoc3ZnU3R5bGUtPnRleHRBbmNob3IoKSA9PSBUQV9NSURETEUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX01JRERMRSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1
ZShDU1NfVkFMX0VORCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NfUFJPUF9XUklUSU5H
X01PREU6IHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3ZnU3R5bGUtPndyaXRpbmdNb2RlKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgV01fTFJUQjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTFJfVEIpOwotICAgICAgICAgICAgY2FzZSBXTV9MUjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTFIp
OwotICAgICAgICAgICAgY2FzZSBXTV9STFRCOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9STF9UQik7Ci0gICAgICAgICAgICBjYXNlIFdNX1JM
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9S
TCk7Ci0gICAgICAgICAgICBjYXNlIFdNX1RCUkw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX1RCX1JMKTsKLSAgICAgICAgICAgIGNhc2UgV01f
VEI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFM
X1RCKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBjYXNlIENTU19QUk9QX1RF
WFRfUkVOREVSSU5HOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShz
dmdTdHlsZS0+dGV4dFJlbmRlcmluZygpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9BTElHTk1F
TlRfQkFTRUxJTkU6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2
Z1N0eWxlLT5hbGlnbm1lbnRCYXNlbGluZSgpKTsKKyAgICAgICAgY2FzZSBDU1NfUFJPUF9ET01J
TkFOVF9CQVNFTElORToKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3ZnU3R5bGUtPmRvbWluYW50QmFzZWxpbmUoKSk7CisgICAgICAgIGNhc2UgQ1NTX1BST1BfVEVY
VF9BTkNIT1I6CisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0
eWxlLT50ZXh0QW5jaG9yKCkpOworICAgICAgICBjYXNlIENTU19QUk9QX1dSSVRJTkdfTU9ERToK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPndyaXRp
bmdNb2RlKCkpOwogICAgICAgICBjYXNlIENTU19QUk9QX0NMSVBfUEFUSDoKICAgICAgICAgICAg
IGlmICghc3ZnU3R5bGUtPmNsaXBQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUtPmNsaXBQYXRoKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKTsKQEAgLTI4NSwxNCArMTMxLDE0IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIHJldHVybiBzdmdTdHlsZS0+
c3Ryb2tlV2lkdGgoKTsKICAgICAgICAgY2FzZSBDU1NfUFJPUF9CQVNFTElORV9TSElGVDogewog
ICAgICAgICAgICAgc3dpdGNoIChzdmdTdHlsZS0+YmFzZWxpbmVTaGlmdCgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIEJTX0JBU0VMSU5FOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoQ1NTX1ZBTF9CQVNFTElORSk7Ci0gICAgICAgICAgICBjYXNlIEJTX1NVUEVS
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9T
VVBFUik7Ci0gICAgICAgICAgICBjYXNlIEJTX1NVQjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1VCKTsKLSAgICAgICAgICAgIGNhc2UgQlNf
TEVOR1RIOgotICAgICAgICAgICAgICAgIHJldHVybiBzdmdTdHlsZS0+YmFzZWxpbmVTaGlmdFZh
bHVlKCk7CisgICAgICAgICAgICAgICAgY2FzZSBCU19CQVNFTElORToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0JBU0VMSU5FKTsKKyAg
ICAgICAgICAgICAgICBjYXNlIEJTX1NVUEVSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfU1VQRVIpOworICAgICAgICAgICAgICAgIGNh
c2UgQlNfU1VCOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKENTU19WQUxfU1VCKTsKKyAgICAgICAgICAgICAgICBjYXNlIEJTX0xFTkdUSDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN2Z1N0eWxlLT5iYXNlbGluZVNoaWZ0VmFsdWUoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QUk9QX01BUktFUjoKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAy
NjY1MykKKysrIFdlYkNvcmUva3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxl
eGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KIAogICAgIEJhc2VkIG9uIGtodG1sIGNz
cyBjb2RlIGJ5OgogICAgIENvcHlyaWdodChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbChrbm9sbEBr
ZGUub3JnKQpAQCAtMzEsOCArMzIsOCBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgogCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTAyLDQ4ICsxMDMsOCBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVydHkoCiAgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTChhbGlnbm1lbnRCYXNlbGluZSwgQWxpZ25tZW50QmFzZWxpbmUpCiAgICAgICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRBbGlnbm1lbnRCYXNlbGluZShBQl9BVVRPKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JBU0VMSU5FOgotICAgICAgICAgICAgICAg
ICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfQkFTRUxJTkUpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQkVGT1JF
X0VER0U6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRCYXNlbGlu
ZShBQl9CRUZPUkVfRURHRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgICAg
ICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfVEVYVF9CRUZPUkVfRURHRSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9N
SURETEU6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRCYXNlbGlu
ZShBQl9NSURETEUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIENTU19WQUxfQ0VOVFJBTDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNl
dEFsaWdubWVudEJhc2VsaW5lKEFCX0NFTlRSQUwpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQUZURVJfRURHRToKLSAgICAgICAgICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldEFsaWdubWVudEJhc2VsaW5lKEFCX0FGVEVSX0VER0UpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxf
VEVYVF9BRlRFUl9FREdFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25t
ZW50QmFzZWxpbmUoQUJfVEVYVF9BRlRFUl9FREdFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0lERU9HUkFQSElDOgotICAgICAgICAg
ICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJfSURFT0dSQVBISUMp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19W
QUxfQUxQSEFCRVRJQzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEFsaWdubWVu
dEJhc2VsaW5lKEFCX0FMUEhBQkVUSUMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU19WQUxfSEFOR0lORzoKLSAgICAgICAgICAgICAgICAgICAg
c3Znc3R5bGUtPnNldEFsaWdubWVudEJhc2VsaW5lKEFCX0hBTkdJTkcpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTUFUSEVNQVRJQ0FM
OgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0QWxpZ25tZW50QmFzZWxpbmUoQUJf
TUFUSEVNQVRJQ0FMKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRBbGlnbm1lbnRCYXNlbGlu
ZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NfUFJPUF9CQVNFTElORV9TSElGVDoKQEAgLTE5MiwyNDAgKzE1Myw3OCBAQCB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVydHkoCiAgICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChwb2ludGVyRXZlbnRzLCBQb2ludGVyRXZlbnRzKQogICAg
ICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQUxMOgotICAgICAgICAgICAg
ICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9BTEwpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTk9ORToKLSAgICAg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoUEVfTk9ORSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9WSVNJ
QkxFUEFJTlRFRDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50ZXJFdmVu
dHMoUEVfVklTSUJMRV9QQUlOVEVEKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1ZJU0lCTEVGSUxMOgotICAgICAgICAgICAgICAgICAg
ICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9WSVNJQkxFX0ZJTEwpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfVklTSUJMRVNU
Uk9LRToKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoUEVf
VklTSUJMRV9TVFJPS0UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU19WQUxfVklTSUJMRToKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUt
PnNldFBvaW50ZXJFdmVudHMoUEVfVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9QQUlOVEVEOgotICAgICAgICAgICAgICAg
ICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9QQUlOVEVEKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0ZJTEw6Ci0gICAg
ICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKFBFX0ZJTEwpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfU1RS
T0tFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhQRV9T
VFJPS0UpOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgCisgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0UG9pbnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9ET01JTkFOVF9CQVNFTElORToKICAg
ICAgICAgewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZG9taW5hbnRC
YXNlbGluZSwgRG9taW5hbnRCYXNlbGluZSkKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFM
X0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5l
KERCX0FVVE8pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU19WQUxfVVNFX1NDUklQVDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNl
dERvbWluYW50QmFzZWxpbmUoREJfVVNFX1NDUklQVCk7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9OT19DSEFOR0U6Ci0gICAgICAgICAg
ICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKERCX05PX0NIQU5HRSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9S
RVNFVF9TSVpFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNl
bGluZShEQl9SRVNFVF9TSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NfVkFMX0lERU9HUkFQSElDOgotICAgICAgICAgICAgICAgICAgICBz
dmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9JREVPR1JBUEhJQyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9BTFBIQUJFVElD
OgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9B
TFBIQUJFVElDKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX0hBTkdJTkc6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRE
b21pbmFudEJhc2VsaW5lKERCX0hBTkdJTkcpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTUFUSEVNQVRJQ0FMOgotICAgICAgICAgICAg
ICAgICAgICBzdmdzdHlsZS0+c2V0RG9taW5hbnRCYXNlbGluZShEQl9NQVRIRU1BVElDQUwpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxf
Q0VOVFJBTDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldERvbWluYW50QmFzZWxp
bmUoREJfQ0VOVFJBTCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTX1ZBTF9NSURETEU6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXREb21pbmFudEJhc2VsaW5lKERCX01JRERMRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9URVhUX0FGVEVSX0VER0U6Ci0gICAgICAg
ICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKERCX1RFWFRfQUZURVJf
RURHRSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9URVhUX0JFRk9SRV9FREdFOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+
c2V0RG9taW5hbnRCYXNlbGluZShEQl9URVhUX0JFRk9SRV9FREdFKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgIAorICAgICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXREb21pbmFudEJhc2VsaW5lKCpw
cmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU19QUk9QX0NPTE9SX0lOVEVSUE9MQVRJT046CiAgICAgICAgIHsKICAgICAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbG9ySW50ZXJwb2xhdGlvbiwgQ29sb3JJbnRl
cnBvbGF0aW9uKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1NS
R0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb24o
Q0lfU1JHQik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTX1ZBTF9MSU5FQVJSR0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRD
b2xvckludGVycG9sYXRpb24oQ0lfTElORUFSUkdCKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAg
ICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb24oQ0lfQVVUTyk7Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgIAorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAg
IHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb24oKnByaW1pdGl2ZVZhbHVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09MT1JfSU5U
RVJQT0xBVElPTl9GSUxURVJTOgogICAgICAgICB7CiAgICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChjb2xvckludGVycG9sYXRpb25GaWx0ZXJzLCBDb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1NS
R0I6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDb2xvckludGVycG9sYXRpb25G
aWx0ZXJzKENJX1NSR0IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU19WQUxfTElORUFSUkdCOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyhDSV9MSU5FQVJSR0IpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAg
ICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
Q0lfQVVUTyk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUpCisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgQ1NTX1BST1BfQ09MT1JfUkVOREVSSU5HOgorICAgICAgICB7Cisg
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChjb2xvclJlbmRlcmluZywgQ29s
b3JSZW5kZXJpbmcpCisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICAgICAgc3Znc3R5bGUtPnNldENvbG9yUmVuZGVyaW5nKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QUk9QX0NMSVBfUlVM
RToKICAgICAgICAgewogICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoY2xp
cFJ1bGUsIENsaXBSdWxlKQotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19W
QUxfTk9OWkVSTzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldENsaXBSdWxlKFJV
TEVfTk9OWkVSTyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTX1ZBTF9FVkVOT0REOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
Q2xpcFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIAorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAg
ICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDbGlwUnVsZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9GSUxMX1JVTEU6
CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGZpbGxS
dWxlLCBGaWxsUnVsZSkKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfTk9O
WkVSTzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxSdWxlKFJVTEVfTk9O
WkVSTyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTX1ZBTF9FVkVOT0REOgotICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RmlsbFJ1
bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRGaWxsUnVsZSgq
cHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NfUFJPUF9TVFJPS0VfTElORUpPSU46CiAgICAgICAgIHsKICAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGpvaW5TdHlsZSwgSm9pblN0eWxlKQotCi0gICAgICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9NSVRFUjoKLSAgICAgICAgICAgICAg
ICAgICAgc3Znc3R5bGUtPnNldEpvaW5TdHlsZShNaXRlckpvaW4pOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfUk9VTkQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRKb2luU3R5bGUoUm91bmRKb2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0JFVkVMOgot
ICAgICAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0Sm9pblN0eWxlKEJldmVsSm9pbik7Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUp
CisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEpvaW5TdHlsZSgqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9J
TUFHRV9SRU5ERVJJTkc6CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKGltYWdlUmVuZGVyaW5nLCBJbWFnZVJlbmRlcmluZykKLSAgICAgICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FVVE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0
eWxlLT5zZXRJbWFnZVJlbmRlcmluZyhJUl9BVVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIENT
U19WQUxfT1BUSU1JWkVTUEVFRDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldElt
YWdlUmVuZGVyaW5nKElSX09QVElNSVpFU1BFRUQpOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NT
X1ZBTF9PUFRJTUlaRVFVQUxJVFk6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRJ
bWFnZVJlbmRlcmluZyhJUl9PUFRJTUlaRVFVQUxJVFkpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRJ
bWFnZVJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9TSEFQRV9SRU5ERVJJTkc6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHNoYXBlUmVuZGVyaW5nLCBT
aGFwZVJlbmRlcmluZykKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0FV
VE86Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRTaGFwZVJlbmRlcmluZyhTUl9B
VVRPKTsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfT1BUSU1JWkVTUEVFRDoKLSAgICAg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKFNSX09QVElNSVpFU1BF
RUQpOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9DUklTUEVER0VTOgotICAgICAgICAg
ICAgICAgICAgICBzdmdzdHlsZS0+c2V0U2hhcGVSZW5kZXJpbmcoU1JfQ1JJU1BFREdFUyk7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX0dFT01FVFJJQ1BSRUNJU0lPTjoKLSAgICAgICAg
ICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKFNSX0dFT01FVFJJQ1BSRUNJ
U0lPTik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFNoYXBlUmVuZGVyaW5nKCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QUk9Q
X1RFWFRfUkVOREVSSU5HOgogICAgICAgICB7CiAgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTCh0ZXh0UmVuZGVyaW5nLCBUZXh0UmVuZGVyaW5nKQotICAgICAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIENTU19WQUxfQVVUTzoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5
bGUtPnNldFRleHRSZW5kZXJpbmcoVFJfQVVUTyk7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX09QVElNSVpFU1BFRUQ6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRUZXh0
UmVuZGVyaW5nKFRSX09QVElNSVpFU1BFRUQpOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZB
TF9PUFRJTUlaRUxFR0lCSUxJVFk6Ci0gICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRU
ZXh0UmVuZGVyaW5nKFRSX09QVElNSVpFTEVHSUJJTElUWSk7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NfVkFMX0dFT01FVFJJQ1BSRUNJU0lPTjoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5
bGUtPnNldFRleHRSZW5kZXJpbmcoVFJfR0VPTUVUUklDUFJFQ0lTSU9OKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0VGV4dFJlbmRlcmluZygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgLy8gZW5kIG9mIGlkZW50IG9ubHkgcHJvcGVydGllcwpA
QCAtNTg1LDIyICszODQsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZHUHJvcGVy
dHkoCiAgICAgICAgIGNhc2UgQ1NTX1BST1BfU1RST0tFX0xJTkVDQVA6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNhcFN0eWxlLCBDYXBTdHlsZSkK
LSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfQlVUVDoKLSAgICAgICAgICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldENhcFN0eWxlKEJ1dHRDYXApOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfUk9VTkQ6Ci0gICAgICAg
ICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZShSb3VuZENhcCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9TUVVBUkU6Ci0g
ICAgICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZShTcXVhcmVDYXApOwotICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAg
ICAgIHN2Z3N0eWxlLT5zZXRDYXBTdHlsZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUFJPUF9TVFJPS0VfTUlURVJMSU1J
VDoKQEAgLTY2OSwyOSArNDU0LDE1IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQ
cm9wZXJ0eSgKICAgICAgICAgY2FzZSBDU1NfUFJPUF9URVhUX0FOQ0hPUjoKICAgICAgICAgewog
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEFuY2hvciwgVGV4dEFu
Y2hvcikKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfU1RBUlQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRUZXh0QW5jaG9yKFRBX1NUQVJUKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX01JRERM
RToKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFRleHRBbmNob3IoVEFfTUlERExF
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX0VORDoKLSAgICAgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFRleHRBbmNob3IoVEFf
RU5EKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSkKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0VGV4dEFuY2hvcigqcHJpbWl0
aXZlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NfUFJPUF9XUklUSU5HX01PREU6CiAgICAgICAgIHsKICAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKHdyaXRpbmdNb2RlLCBXcml0aW5nTW9kZSkKICAgICAgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0V3JpdGluZ01v
ZGUoKEVXcml0aW5nTW9kZSkocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NfVkFMX0xS
X1RCKSk7CisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFdyaXRpbmdNb2RlKCpwcmltaXRp
dmVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U19QUk9QX1NUT1BfQ09MT1I6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>