<?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>108308</bug_id>
          
          <creation_ts>2013-01-30 01:05:09 -0800</creation_ts>
          <short_desc>Rename from parentOrHost* to parentOrShadowHost*.</short_desc>
          <delta_ts>2013-09-05 10:49:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Changhun Kang">chkang514</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819914</commentid>
    <comment_count>0</comment_count>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 01:05:09 -0800</bug_when>
    <thetext>According to below &quot;FIXME&quot; in Node.h, I rename parentOrHost* to parentOrShadowHost*.

// FIXME: These methods should be renamed parentOrShadowHost*
ContainerNode* parentOrHostNode() const;
Element* parentOrHostElement() const;
void setParentOrHostNode(ContainerNode*);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819928</commentid>
    <comment_count>1</comment_count>
      <attachid>185428</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 01:16:38 -0800</bug_when>
    <thetext>Created attachment 185428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819932</commentid>
    <comment_count>2</comment_count>
      <attachid>185428</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 01:17:20 -0800</bug_when>
    <thetext>Comment on attachment 185428
Patch

Rejecting attachment 185428 from review queue.

temoochin@company100.net does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819934</commentid>
    <comment_count>3</comment_count>
      <attachid>185428</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 01:18:01 -0800</bug_when>
    <thetext>Comment on attachment 185428
Patch

Rejecting attachment 185428 from commit-queue.

temoochin@company100.net does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819961</commentid>
    <comment_count>4</comment_count>
      <attachid>185437</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 01:47:11 -0800</bug_when>
    <thetext>Created attachment 185437
Patch

Sorry,
I miss-clicked commit + and review + buttons.
This patch is exactly same previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820255</commentid>
    <comment_count>5</comment_count>
      <attachid>185428</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-30 09:14:08 -0800</bug_when>
    <thetext>Comment on attachment 185428
Patch

Obsoleting this apparently duplicate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820261</commentid>
    <comment_count>6</comment_count>
      <attachid>185437</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-30 09:19:57 -0800</bug_when>
    <thetext>Comment on attachment 185437
Patch

I am not a reviewer, but this change looks good to me. A straightforward renaming. For context, I think the reason for the FIXME in the first instance is that the term &quot;host&quot; is now overloaded: ShadowRoots are attached to shadow hosts (nee host) and template elements host their content. If the EWS likes this I think it should be accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820274</commentid>
    <comment_count>7</comment_count>
      <attachid>185437</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-30 09:44:22 -0800</bug_when>
    <thetext>Comment on attachment 185437
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        * bindings/js/JSDOMBinding.h:

In this type of patch (a straightforward rename), just zap this whole generated laundry list. It&apos;s not very useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820728</commentid>
    <comment_count>8</comment_count>
      <attachid>185603</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 15:52:55 -0800</bug_when>
    <thetext>Created attachment 185603
Patch

I zapped change file list in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820752</commentid>
    <comment_count>9</comment_count>
      <attachid>185603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 16:08:08 -0800</bug_when>
    <thetext>Comment on attachment 185603
Patch

Rejecting attachment 185603 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 185603, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
re/svg/SVGForeignObjectElement.cpp
patching file Source/WebCore/svg/SVGGElement.cpp
patching file Source/WebCore/svg/SVGLocatable.cpp
patching file Source/WebCore/svg/SVGStyledElement.cpp
patching file Source/WebKit2/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit2/WebProcess/WebPage/WebPage.cpp
Hunk #1 succeeded at 1774 (offset 2 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16200948</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820775</commentid>
    <comment_count>10</comment_count>
      <attachid>185613</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 16:24:40 -0800</bug_when>
    <thetext>Created attachment 185613
Patch

I fixed the conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820808</commentid>
    <comment_count>11</comment_count>
      <attachid>185622</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-30 16:47:49 -0800</bug_when>
    <thetext>Created attachment 185622
Patch

I fixed some conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820878</commentid>
    <comment_count>12</comment_count>
      <attachid>185622</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 17:44:28 -0800</bug_when>
    <thetext>Comment on attachment 185622
Patch

Rejecting attachment 185622 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 185622, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/16199970</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822141</commentid>
    <comment_count>13</comment_count>
      <attachid>185899</attachid>
    <who name="Changhun Kang">chkang514</who>
    <bug_when>2013-01-31 16:58:43 -0800</bug_when>
    <thetext>Created attachment 185899
Patch

I add a review comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822239</commentid>
    <comment_count>14</comment_count>
      <attachid>185899</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 19:18:53 -0800</bug_when>
    <thetext>Comment on attachment 185899
Patch

Clearing flags on attachment: 185899

Committed r141524: &lt;http://trac.webkit.org/changeset/141524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893728</commentid>
    <comment_count>15</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-26 03:28:44 -0700</bug_when>
    <thetext>Looks like this was fixed. Closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925123</commentid>
    <comment_count>16</comment_count>
      <attachid>185622</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-05 10:49:56 -0700</bug_when>
    <thetext>Comment on attachment 185622
Patch

The work on the bug has ceased, removing the r? flag on this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185428</attachid>
            <date>2013-01-30 01:16:38 -0800</date>
            <delta_ts>2013-01-30 09:14:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>57631</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSAxMmViNTBjM2NjOTRmODg4ZTc1OGNiNTJmNGFlMmQzZTExMTgwNTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMzQgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgICAgICAgICAgfCAgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwICAg
IHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAg
ICAgICAgfCAgIDE0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKyst
LS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMyArKy0tCiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgICAgICAgICAg
ICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggICAgICAgICAg
ICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcCAgICAgICAgICAgIHwgICAxMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgICAgICAgICAgIHwgICAgNiArLQogU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwICAgICB8ICAgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgIHwg
ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwICAgICAgICAg
ICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAg
ICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwICAgICAgfCAgICAyICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcCB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAxOCArLS0KIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwICAgICAgICAgICAgICAgIHwgICAgNiAr
LQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwICAgICAgICAgICAgfCAg
ICAyICstCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTAgKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCAgICAgIHwgICAgMiArLQogNDIgZmlsZXMgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKyksIDEx
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2NGRkMy4uOWFhYjdlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMy0wMS0zMCAgQ2hhbmdodW4gS2FuZyAgPHRlbW9vY2hp
bkBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRv
IHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9kZS5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnJvb3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MpOgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckZpbHRlcjo6cHVzaFBhcmVudFN0YWNrRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JGaWx0ZXI6OnNldHVwUGFyZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JG
aWx0ZXI6OnB1c2hQYXJlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjb3Bl
UmVzb2x2ZXI6OnBvcCk6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXR0cjo6Y3JlYXRlVGV4dENoaWxkKToKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omluc2VydGVk
SW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpyZWxlYXNlUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGls
ZE5lZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udGFpbnNJbmNs
dWRpbmdTaGFkb3dET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udGFpbnNJbmNsdWRp
bmdIb3N0RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dmlydHVhbENvbXB1dGVk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzaG93Tm9kZVBhdGhGb3JUaGlzKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyYXZlcnNlVHJlZUFuZE1hcmspOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1RyZWVB
bmRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVPd25l
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3Vu
dEZvckluc2VydGlvbik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzVHJlZVNoYXJlZFBhcmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlR3VhcmFu
dGVlZEhvc3RGcmVlKToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBzZXVkb0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpob3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldEhvc3QpOgorICAgICAgICAqIGRvbS9UZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHVGV4dCk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0
Rm9jdXNlZE5vZGVJZk5lZWRlZCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGVwdGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0VXBGdWxseUNsaXBwZWRTdGFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpzZXRDb250ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpj
YW5Mb2FkRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29waW5nRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9yVmlk
ZW9FbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlU3Vi
dGFyZ2V0TGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpnZW5lcmF0aW5nTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEVs
ZW1lbnRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxlbWVudDo6dmlld3BvcnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Omhhc0xvYWRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSk6CisgICAgICAgICog
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdMb2NhdGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xvY2F0YWJsZTo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKToKKwogMjAxMy0wMS0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA2ZWI5NmQ3Li5mM2I4ZTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjE4LDggKzIxOCw4
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIGlmIChub2RlLT5pbkRv
Y3VtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKTsKIAotICAgICAg
ICB3aGlsZSAobm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQotICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgd2hpbGUgKG5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDYyY2QyZDMuLjJlYzk3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKE5v
ZGUqIG5vZGUpCiAgICAgICAgIG5vZGUgPSBvd25lckVsZW1lbnQ7CiAgICAgfQogCi0gICAgd2hp
bGUgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICB3aGlsZSAo
Tm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBu
b2RlID0gcGFyZW50OwogCiAgICAgcmV0dXJuIG5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
RmlsdGVyLmNwcAppbmRleCA2MWY5ZGZlLi5lYWY4ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckZpbHRlci5jcHAKQEAgLTUzLDggKzUzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbGxl
Y3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3IK
IHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnB1c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1lbnQqIHBhcmVu
dCkKIHsKICAgICBBU1NFUlQobV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOwotICAgIEFTU0VS
VChtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCBtX3BhcmVudFN0YWNrLmxhc3QoKS5lbGVtZW50
ID09IHBhcmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKTsKLSAgICBBU1NFUlQoIW1fcGFyZW50
U3RhY2suaXNFbXB0eSgpIHx8ICFwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSk7CisgICAg
QVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50U3RhY2subGFzdCgpLmVs
ZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpOworICAgIEFTU0VS
VCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnRTdGFja0ZyYW1lKHBh
cmVudCkpOwogICAgIFBhcmVudFN0YWNrRnJhbWUmIHBhcmVudEZyYW1lID0gbV9wYXJlbnRTdGFj
ay5sYXN0KCk7CiAgICAgLy8gTWl4IHRhZ3MsIGNsYXNzIG5hbWVzIGFuZCBpZHMgaW50byBzb21l
IHNvcnQgb2Ygd2VpcmQgYm91aWxsYWJhaXNzZS4KQEAgLTg3LDEzICs4NywxMyBAQCB2b2lkIFNl
bGVjdG9yRmlsdGVyOjpzZXR1cFBhcmVudFN0YWNrKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX3Bh
cmVudFN0YWNrLnNocmluaygwKTsKICAgICBtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlciA9IGFk
b3B0UHRyKG5ldyBCbG9vbUZpbHRlcjxibG9vbUZpbHRlcktleUJpdHM+KTsKICAgICAvLyBGYXN0
IHZlcnNpb24gaWYgcGFyZW50IGlzIGEgcm9vdCBlbGVtZW50OgotICAgIGlmICghcGFyZW50LT5w
YXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICBpZiAoIXBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpKSB7CiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgLy8gT3RoZXJ3aXNlIGNsaW1iIHVwIHRoZSB0cmVlLgogICAg
IFZlY3RvcjxFbGVtZW50KiwgMzA+IGFuY2VzdG9yczsKLSAgICBmb3IgKEVsZW1lbnQqIGFuY2Vz
dG9yID0gcGFyZW50OyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50T3JIb3N0
RWxlbWVudCgpKQorICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnQ7IGFuY2VzdG9y
OyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpCiAgICAg
ICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0b3IpOwogICAgIGZvciAoc2l6ZV90IG4gPSBhbmNl
c3RvcnMuc2l6ZSgpOyBuOyAtLW4pCiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKGFuY2Vz
dG9yc1tuIC0gMV0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnB1
c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KQogICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmll
ckZpbHRlcik7CiAgICAgLy8gV2UgbWF5IGdldCBpbnZva2VkIGZvciBzb21lIHJhbmRvbSBlbGVt
ZW50cyBpbiBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlLgogICAgIC8vIFBh
dXNlIG1haW50YWluaW5nIHRoZSBzdGFjayBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKG1fcGFyZW50
U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpCisg
ICAgaWYgKG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5wYXJlbnRPclNo
YWRvd0hvc3RFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBwdXNoUGFyZW50U3RhY2tG
cmFtZShwYXJlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDk1
NmI5ODQuLjE5ZWJjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogCiB2b2lkIFN0eWxlUmVzb2x2
ZXI6OnB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBjb25zdCBDb250
YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7
CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50c1BhcmVudCA9IHBhcmVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogCiAgICAgLy8gV2UgYXJlIG5vdCBhbHdheXMgaW52b2tl
ZCBjb25zaXN0ZW50bHkuIEZvciBleGFtcGxlLCBzY3JpcHQgZXhlY3V0aW9uIGNhbiBjYXVzZSB1
cyB0byBlbnRlcgogICAgIC8vIHN0eWxlIHJlY2FsYyBpbiB0aGUgbWlkZGxlIG9mIHRyZWUgYnVp
bGRpbmcuIFdlIG1heSBhbHNvIGJlIGludm9rZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSB0
cmVlLgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVudEVs
ZW1lbnQoRWxlbWVudCogcGFyZW50KQogCiAgICAgLy8gTm90ZTogV2UgbXVzdG4ndCBza2lwIFNo
YWRvd1Jvb3Qgbm9kZXMgZm9yIHRoZSBzY29wZSBzdGFjay4KICAgICBpZiAobV9zY29wZVJlc29s
dmVyKQotICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPnB1c2gocGFyZW50LCBwYXJlbnQtPnBhcmVu
dE9ySG9zdE5vZGUoKSk7CisgICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVzaChwYXJlbnQsIHBh
cmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVy
Ojpwb3BQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNS4uODQ1OGQ4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJl
bnQpCiAKICAgICBtX3N0YWNrLnNocmluaygwKTsKICAgICBpbnQgYXV0aG9yU3R5bGVCb3VuZHNJ
bmRleCA9IDA7Ci0gICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsg
c2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnQ7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgUnVsZVNldCogcnVsZVNldCA9IHJ1
bGVTZXRGb3Ioc2NvcGUpOwogICAgICAgICBpZiAocnVsZVNldCkKICAgICAgICAgICAgIG1fc3Rh
Y2suYXBwZW5kKFN0YWNrRnJhbWUoc2NvcGUsIGF1dGhvclN0eWxlQm91bmRzSW5kZXgsIHJ1bGVT
ZXQpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cG9wKGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgICAgICAgICAgbV9zdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChz
Y29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCiAgICAgICAgICAgICAtLW1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsKLSAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgIG1fc3RhY2tQYXJlbnQgPSBzY29wZS0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDRmNDY1YTEuLjVkOWVkOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0
Q2hpbGQoKQogCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRoaW5nIGFwcGVuZENoaWxkKCkg
d291bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1faWdub3JlQ2hpbGRyZW5DaGFu
Z2VkIHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3JlIGVmZmljaWVudGx5LgotICAg
ICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICAgICAgdGV4dE5v
ZGUtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUodGhpcyk7CiAgICAgICAgIHNldEZpcnN0Q2hp
bGQodGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICBzZXRMYXN0Q2hpbGQodGV4dE5vZGUuZ2V0KCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKaW5kZXggYWI1OGQ2MS4uMTQ3NjJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cGFyZW50KCkKIE5vZGUqIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2Fs
RGV0YWlscyogZGV0YWlscykgY29uc3QKIHsKICAgICBpZiAobm9kZS0+aXNQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIHJl
dHVybiBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICBpZiAoIWNhbkNyb3Nz
VXBwZXJCb3VuZGFyeSgpICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIEFTU0VS
VCh0b1NoYWRvd1Jvb3Qobm9kZSktPmlzWW91bmdlc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggZDRmNzFiOC4uYjljMGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5z
ZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNl
CiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAg
Ly8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGlu
ZyBtdXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0
Tm9kZSgpKTsKKyAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTMxOCw3ICszMTgs
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbihOb2RlKiBuZXh0Q2hp
bGQsIE5vZGUqIG5ld0NoaWxkKQogICAgICAgICBBU1NFUlQobV9maXJzdENoaWxkID09IG5leHRD
aGlsZCk7CiAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5ld0NoaWxkOwogICAgIH0KLSAgICBuZXdD
aGlsZC0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICBuZXdDaGlsZC0+c2V0UGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSh0aGlzKTsKICAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5n
KHByZXYpOwogICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOwogfQpAQCAt
MzQ4LDcgKzM0OCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiB7CiAgICAgLy8gQ2hlY2sg
dGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNh
biBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMu
Ci0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBBU1NF
UlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCiAgICAgUmVmUHRy
PE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBib29sIENvbnRhaW5l
ck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJ
ZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11
dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2Rl
KCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7
CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNTQ3LDcgKzU0Nyw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxkLCBO
b2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG9sCiAKICAgICBvbGRDaGlsZC0+c2V0UHJldmlvdXNTaWJs
aW5nKDApOwogICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKLSAgICBvbGRDaGlsZC0+
c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICBvbGRDaGlsZC0+c2V0UGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgwKTsKIAogICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkQ2hpbGQpOwog
fQpAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4o
KQogICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzY3JlcGFuY3kgYmV0d2VlbiByZW1vdmVDaGls
ZCgpIGFuZCBpdHMgb3B0aW1pemVkIHZlcnNpb24gcmVtb3ZlQ2hpbGRyZW4oKS4KICAgICAgICAg
ICAgICAgICBuLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgICAgICAgICAgICAgbi0+c2V0
TmV4dFNpYmxpbmcoMCk7Ci0gICAgICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgw
KTsKKyAgICAgICAgICAgICAgICBuLT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKDApOwogICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQobi5nZXQoKSk7CiAKICAgICAg
ICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwpAQCAtNjQxLDcgKzY0MSw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvCiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3Qg
ImZsb2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRl
IGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQo
KSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKICAgICBlYyA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCmluZGV4IDEzMjFkZmQuLjliNzk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaApAQCAtMjY2LDcgKzI2Niw3IEBAIGlubGluZSBib29sIE5vZGU6Om5lZWRzU2hhZG93
VHJlZVdhbGtlcigpIGNvbnN0CiB7CiAgICAgaWYgKGdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fs
a2VyRmxhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmdldEZs
YWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggNjhlNzI4Zi4uYTI1Y2JmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTEwOCw3ICsx
MDgsNyBAQCBpbmxpbmUgdm9pZCByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIoR2Vu
ZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2Rl
LCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KIGlubGluZSB2b2lkIGFwcGVuZENoaWxkVG9D
b250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFp
bmVyKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKGNvbnRhaW5lcik7CisgICAg
Y2hpbGQtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoY29udGFpbmVyKTsKIAogICAgIEdlbmVy
aWNOb2RlKiBsYXN0Q2hpbGQgPSBjb250YWluZXItPmxhc3RDaGlsZCgpOwogICAgIGlmIChsYXN0
Q2hpbGQpIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAg
ICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIG4tPnNldFByZXZpb3Vz
U2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwotICAgICAgICAg
ICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgICAgIG4tPnNldFBhcmVudE9y
U2hhZG93SG9zdE5vZGUoMCk7CiAKICAgICAgICAgICAgIGlmICghbi0+cmVmQ291bnQoKSkgewog
I2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGFjOGU5ODYuLjkzYjZh
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTg0Nyw3ICs1ODQ3LDcgQEAgdm9pZCBE
b2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3UKICAgICAvLyBJZiBpdCBoYXNuJ3QsIHdlIGRvIG5vdCBuZWVkIHRv
IGRvIGFueXRoaW5nLgogICAgIE5vZGUqIG5ld0hvdmVyTm9kZSA9IGlubmVyRWxlbWVudEluRG9j
dW1lbnQ7CiAgICAgd2hpbGUgKG5ld0hvdmVyTm9kZSAmJiAhbmV3SG92ZXJOb2RlLT5yZW5kZXJl
cigpKQotICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdIb3Zlck5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKTsKKyAgICAgICAgbmV3SG92ZXJOb2RlID0gbmV3SG92ZXJOb2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGN1cnJlbnQgaG92ZXIgbm9kZS4KICAg
ICBzZXRIb3Zlck5vZGUobmV3SG92ZXJOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODU4
ZTQ1OS4uYTY0OGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1OTAsNyArMTU5MCw3IEBA
IGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIAogaW5saW5lIE5vZGU6
Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBt
X25vZGVGbGFncyh0eXBlKQotICAgICwgbV9wYXJlbnRPckhvc3ROb2RlKDApCisgICAgLCBtX3Bh
cmVudE9yU2hhZG93SG9zdE5vZGUoMCkKICAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50KQogICAg
ICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggMWFmZTI2ZC4uMTViN2FmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQ1Nyw3ICsy
NDU3LDcgQEAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIEVsZW1lbnQ6OnNwZWxsY2hlY2tBdHRy
aWJ1dGVTdGF0ZSgpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxl
bWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZv
ciAoY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgc3dpdGNoIChlbGVt
ZW50LT5zcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSkgewogICAgICAgICBjYXNlIFNwZWxsY2hl
Y2tBdHRyaWJ1dGVUcnVlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCBlMWJkNDZjLi44NjY0MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTg1OCw3ICs4
NTgsNyBAQCBpbmxpbmUgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBOb2RlOjpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZQogICAgIEFTU0VSVChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoaW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgc2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7Ci0g
ICAgaWYgKHBhcmVudE9ySG9zdE5vZGUoKS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICBpZiAocGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBzZXRGbGFn
KElzSW5TaGFkb3dUcmVlRmxhZyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZGNmNmIzYS4uMTBiOWM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjU2LDcgKzI1Niw3IEBAIGlubGluZSB2
b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCog
ZWxlbWVudCkKICAgICBBU1NFUlQoIWVsZW1lbnQtPm5leHRTaWJsaW5nKCkpOwogICAgIEFTU0VS
VCghZWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCkpOwogCi0gICAgZWxlbWVudC0+c2V0UGFyZW50
T3JIb3N0Tm9kZSgwKTsKKyAgICBlbGVtZW50LT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKDAp
OwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggNDExNjkwMS4uMThlNWQzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtODEwLDcgKzgxMCw3IEBAIGlubGluZSB2b2lkIE5vZGU6OnNldFN0eWxlQ2hhbmdlKFN0eWxl
Q2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogCiBpbmxpbmUgdm9pZCBOb2RlOjptYXJrQW5jZXN0b3Jz
V2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpCiB7Ci0gICAgZm9yIChDb250YWluZXJOb2RlKiBw
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsg
cCA9IHAtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBw
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygp
OyBwID0gcC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBwLT5zZXRDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLT5jaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKSkKQEAgLTEwMzUsNyArMTAzNSw3IEBAIGJvb2wgTm9kZTo6Y29udGFpbnMoY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKIAogYm9vbCBOb2RlOjpjb250YWluc0luY2x1ZGluZ1NoYWRvd0RP
TShjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUgPT0gdGhpcykKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwNTEsNyArMTA1MSw3IEBAIGJvb2wg
Tm9kZTo6Y29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSogbm9kZSkgY29u
c3QKICAgICAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnRGcmFnbWVudCgpICYmIHN0YXRpY19jYXN0
PGNvbnN0IERvY3VtZW50RnJhZ21lbnQqPihub2RlKS0+aXNUZW1wbGF0ZUNvbnRlbnQoKSkKICAg
ICAgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50Kj4obm9kZSktPmhvc3QoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKICNlbHNl
CkBAIC0xMTk2LDcgKzExOTYsNyBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKQogCiBSZW5kZXJTdHlsZSogTm9kZTo6dmlydHVhbENvbXB1dGVk
U3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKLSAgICByZXR1cm4gcGFy
ZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5jb21wdXRlZFN0eWxlKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpIDogMDsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpID8gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5jb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpIDogMDsKIH0KIAogaW50IE5vZGU6Om1heENoYXJhY3Rlck9mZnNldCgpIGNv
bnN0CkBAIC0xMjE5LDcgKzEyMTksNyBAQCBib29sIE5vZGU6OmNhblN0YXJ0U2VsZWN0aW9uKCkg
Y29uc3QKICAgICAgICAgaWYgKHN0eWxlLT51c2VyRHJhZygpID09IERSQUdfRUxFTUVOVCAmJiBz
dHlsZS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0
Tm9kZSgpLT5jYW5TdGFydFNlbGVjdGlvbigpIDogdHJ1ZTsKKyAgICByZXR1cm4gcGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpID8gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5jYW5TdGFydFNlbGVj
dGlvbigpIDogdHJ1ZTsKIH0KIAogRWxlbWVudCogTm9kZTo6c2hhZG93SG9zdCgpIGNvbnN0CkBA
IC0xMjY0LDkgKzEyNjQsOSBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFy
eVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFk
b3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1FbGVtZW50KiBOb2RlOjpwYXJlbnRPckhvc3RF
bGVtZW50KCkgY29uc3QKK0VsZW1lbnQqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUo
KTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7
CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xOTAxLDkgKzE5MDEs
OSBAQCB2b2lkIE5vZGU6OnNob3dOb2RlUGF0aEZvclRoaXMoKSBjb25zdAogewogICAgIFZlY3Rv
cjxjb25zdCBOb2RlKiwgMTY+IGNoYWluOwogICAgIGNvbnN0IE5vZGUqIG5vZGUgPSB0aGlzOwot
ICAgIHdoaWxlIChub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICB3aGlsZSAobm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIGNoYWluLmFwcGVuZChub2RlKTsK
LSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IGNoYWluLnNpemUoKTsgaW5kZXggPiAwOyAtLWluZGV4KSB7CiAgICAgICAgIGNv
bnN0IE5vZGUqIG5vZGUgPSBjaGFpbltpbmRleCAtIDFdOwpAQCAtMTk1OCw3ICsxOTU4LDcgQEAg
c3RhdGljIHZvaWQgdHJhdmVyc2VUcmVlQW5kTWFyayhjb25zdCBTdHJpbmcmIGJhc2VJbmRlbnQs
IGNvbnN0IE5vZGUqIHJvb3ROb2RlLAogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgaW5kZW50Owog
ICAgICAgICBpbmRlbnQuYXBwZW5kKGJhc2VJbmRlbnQpOwotICAgICAgICBmb3IgKGNvbnN0IE5v
ZGUqIHRtcE5vZGUgPSBub2RlOyB0bXBOb2RlICYmIHRtcE5vZGUgIT0gcm9vdE5vZGU7IHRtcE5v
ZGUgPSB0bXBOb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIGZvciAoY29uc3QgTm9k
ZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1wTm9kZSAhPSByb290Tm9kZTsgdG1wTm9k
ZSA9IHRtcE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgICAgIGluZGVu
dC5hcHBlbmQoJ1x0Jyk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBpbmRlbnQudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbm9kZS0+c2hvd05vZGUoKTsKQEAgLTE5
NzUsOCArMTk3NSw4IEBAIHZvaWQgTm9kZTo6c2hvd1RyZWVBbmRNYXJrKGNvbnN0IE5vZGUqIG1h
cmtlZE5vZGUxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvCiB7CiAgICAgY29uc3QgTm9k
ZSogcm9vdE5vZGU7CiAgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUgKG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSAmJiAhbm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKLSAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQor
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIHJvb3RO
b2RlID0gbm9kZTsKIAogICAgIFN0cmluZyBzdGFydGluZ0luZGVudDsKQEAgLTE5OTcsOSArMTk5
Nyw5IEBAIHZvaWQgTm9kZTo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0CiAgICAgc3RybmNweShidWZmZXIsIHJlc3VsdC51dGY4KCkuZGF0YSgp
LCBsZW5ndGggLSAxKTsKIH0KIAotc3RhdGljIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE9y
RnJhbWVPd25lcihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIENvbnRhaW5lck5vZGUqIHBhcmVu
dE9yU2hhZG93SG9zdE9yRnJhbWVPd25lcihjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbnRh
aW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgaWYg
KCFwYXJlbnQgJiYgbm9kZS0+ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
KQogICAgICAgICBwYXJlbnQgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1l
bnQoKTsKICAgICByZXR1cm4gcGFyZW50OwpAQCAtMjAyNyw4ICsyMDI3LDggQEAgc3RhdGljIHZv
aWQgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBOb2RlKiBt
YXJrZWROb2RlLCBjb24KIHZvaWQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBj
b25zdAogewogICAgIE5vZGUqIHJvb3ROb2RlID0gY29uc3RfY2FzdDxOb2RlKj4odGhpcyk7Ci0g
ICAgd2hpbGUgKHBhcmVudE9ySG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSkpCi0gICAgICAgIHJv
b3ROb2RlID0gcGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKTsKKyAgICB3aGlsZSAo
cGFyZW50T3JTaGFkb3dIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKKyAgICAgICAgcm9vdE5v
ZGUgPSBwYXJlbnRPclNoYWRvd0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOwogICAgIHNob3dT
dWJUcmVlQWNyb3NzRnJhbWUocm9vdE5vZGUsIHRoaXMsICIiKTsKIH0KIApAQCAtMjA2MSw3ICsy
MDYxLDcgQEAgdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMpIGNvbnN0CiAKIE5vZGUqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2Vs
ZigpCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5v
ZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9yIGlt
YWdlbWFwcywgdGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJlYSBl
bGVtZW50IG5vdCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBsZXQg
aW1hZ2VzIGJlIHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNvbWV0
aW1lcyByZXR1cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNDkwLDcgKzI0OTAs
NyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMg
c28gdGhhdCA8c2VsZWN0PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgogICAgICAgICBOb2RlKiBzdGFy
dE5vZGUgPSB0aGlzOwogICAgICAgICB3aGlsZSAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogICAgICAgICAKICAgICAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKQEAgLTI1ODMsNyArMjU4Myw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkRPTSk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhcmVudE9ySG9zdE5vZGUpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV90cmVlU2NvcGUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9wcmV2aW91cyk7CkBAIC0yNjI3LDcgKzI2MjcsNyBAQCB2b2lkIE5v
ZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25z
dAogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoTm9kZSogbm9k
ZSA9IHBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKSkKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIG5vZGUt
PmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwogfQogCkBAIC0yNjM4LDcg
KzI2MzgsNyBAQCB2b2lkIE5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3Vu
dEZvckluc2VydGlvbigpIGNvbnN0CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKSkKICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3Vu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkyZmIyYjkuLjAwOTY2ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtMjc1LDEwICsyNzUsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dU
cmVlUm9vdE5vZGUoKTsKIAogICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVlIGhvc3Qu
Ci0gICAgLy8gRklYTUU6IFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHJlbmFtZWQgcGFyZW50T3JT
aGFkb3dIb3N0KgotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKSBjb25zdDsK
LSAgICBFbGVtZW50KiBwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQ
YXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3Q7CisgICAgRWxlbWVudCogcGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShD
b250YWluZXJOb2RlKik7CiAgICAgTm9kZSogaGlnaGVzdEFuY2VzdG9yKCkgY29uc3Q7CiAKICAg
ICAvLyBVc2Ugd2hlbiBpdCdzIGd1YXJhbnRlZWQgdG8gdGhhdCBzaGFkb3dIb3N0IGlzIDAuCkBA
IC03NzgsNyArNzc3LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxO
b2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKLSAgICBib29sIGhhc1RyZWVTaGFy
ZWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiAhIXBhcmVudE9ySG9zdE5vZGUoKTsgfQorICAgIGJv
b2wgaGFzVHJlZVNoYXJlZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOyB9CiAKICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJsZSwgUmljaGx5
RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVsLCBV
c2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUp
IGNvbnN0OwpAQCAtODEyLDcgKzgxMSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpOwogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBDb250YWluZXJO
b2RlKiBtX3BhcmVudE9ySG9zdE5vZGU7CisgICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnRPclNo
YWRvd0hvc3ROb2RlOwogICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9w
cmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CkBAIC04NDgsMjcgKzg0NywyNyBAQCBpbmxpbmUg
dm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VS
TCYgdXJsKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwogfQogCi1pbmxpbmUgdm9pZCBOb2RlOjpz
ZXRQYXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqIHBhcmVudCkKK2lubGluZSB2b2lkIE5v
ZGU6OnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoQ29udGFpbmVyTm9kZSogcGFyZW50KQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9wYXJlbnRPckhvc3ROb2RlID0gcGFy
ZW50OworICAgIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSA9IHBhcmVudDsKIH0KIAotaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKSBjb25zdAoraW5saW5lIENv
bnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSBjb25zdAogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpOwotICAgIHJldHVybiBtX3BhcmVudE9y
SG9zdE5vZGU7CisgICAgcmV0dXJuIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZTsKIH0KIAogaW5s
aW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVy
biBpc1NoYWRvd1Jvb3QoKSA/IDAgOiBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAgcmV0dXJuIGlz
U2hhZG93Um9vdCgpID8gMCA6IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIH0KIAogaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25z
dAogewogICAgIEFTU0VSVCghaXNTaGFkb3dSb290KCkpOwotICAgIHJldHVybiBwYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIH0KIAogaW5s
aW5lIHZvaWQgTm9kZTo6cmVhdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CmluZGV4IDc2MWVjNmYuLmZjMDMyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTU4LDEzICs1OCwxMyBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1l
bnQqIHBhcmVudCwgUHNldWRvSWQgcHNldWRvSWQpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lk
KQogewogICAgIEFTU0VSVChwc2V1ZG9JZCAhPSBOT1BTRVVETyk7Ci0gICAgc2V0UGFyZW50T3JI
b3N0Tm9kZShwYXJlbnQpOworICAgIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUocGFyZW50KTsK
ICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gUHNldWRvRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCiB7Ci0gICAgcmV0dXJu
IHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUo
bV9wc2V1ZG9JZCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+cmVu
ZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCk7CiB9CiAKIHZvaWQgUHNl
dWRvRWxlbWVudDo6YXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDBmODU5MjIu
LjYzOGJjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMTE5LDEyICsxMTksMTIgQEAg
cHJpdmF0ZToKIAogaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6Omhvc3QoKSBjb25zdAogewot
ICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICByZXR1cm4gdG9F
bGVtZW50KHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFNoYWRv
d1Jvb3Q6OnNldEhvc3QoRWxlbWVudCogaG9zdCkKIHsKLSAgICBzZXRQYXJlbnRPckhvc3ROb2Rl
KGhvc3QpOworICAgIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoaG9zdCk7CiAgICAgaWYgKGhv
c3QpCiAgICAgICAgIHNldFBhcmVudFRyZWVTY29wZShob3N0LT50cmVlU2NvcGUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAKaW5kZXggYjViZGFiYi4uNzFmMWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAt
MjUzLDggKzI1Myw4IEBAIHN0YXRpYyBib29sIGlzU1ZHU2hhZG93VGV4dChUZXh0KiB0ZXh0KQog
CiBzdGF0aWMgYm9vbCBpc1NWR1RleHQoVGV4dCogdGV4dCkKIHsKLSAgICBOb2RlKiBwYXJlbnRP
ckhvc3ROb2RlID0gdGV4dC0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIHJldHVybiBwYXJlbnRP
ckhvc3ROb2RlLT5pc1NWR0VsZW1lbnQoKSAmJiAhcGFyZW50T3JIb3N0Tm9kZS0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZyk7CisgICAgTm9kZSogcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSA9IHRleHQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKKyAgICByZXR1cm4gcGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZS0+aXNTVkdFbGVtZW50KCkgJiYgIXBhcmVudE9yU2hhZG93SG9z
dE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggOTVhMzQ2
NS4uYTg5M2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE4ODAsNyArMTg4MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEZvY3VzZWROb2Rl
SWZOZWVkZWQoKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCktPnNldEZvY3VzZWROb2RlKHRhcmdldCwgbV9mcmFtZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LT5wYXJl
bnRPckhvc3ROb2RlKCk7IAorICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIH0KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
c2V0Rm9jdXNlZE5vZGUoMCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IGI2MjExNzEuLjc3MGFjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB1bnNpZ25lZCBCaXRTdGFjazo6c2l6
ZSgpIGNvbnN0CiBzdGF0aWMgdW5zaWduZWQgZGVwdGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMo
Tm9kZSogbm9kZSkKIHsKICAgICB1bnNpZ25lZCBkZXB0aCA9IDA7Ci0gICAgZm9yIChOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpCiAgICAgICAgICsrZGVwdGg7CiAgICAgcmV0dXJuIGRlcHRoOwogfQpA
QCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBOb2RlKiBuZXh0SW5QcmVPcmRlckNyb3NzaW5nU2hh
ZG93Qm91bmRhcmllcyhOb2RlKiByYW5nZUVuZENvbnRhaW5lciwgaW50CiAgICAgICAgIGlmIChO
b2RlKiBuZXh0ID0gcmFuZ2VFbmRDb250YWluZXItPmNoaWxkTm9kZShyYW5nZUVuZE9mZnNldCkp
CiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9Ci0gICAgZm9yIChOb2RlKiBub2RlID0g
cmFuZ2VFbmRDb250YWluZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkp
IHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZUVuZENvbnRhaW5lcjsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBpZiAoTm9kZSogbmV4
dCA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9
CkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHZvaWQgc2V0VXBGdWxseUNsaXBwZWRTdGFjayhC
aXRTdGFjayYgc3RhY2ssIE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gUHV0IHRoZSBub2RlcyBpbiBh
IHZlY3RvciBzbyB3ZSBjYW4gaXRlcmF0ZSBpbiByZXZlcnNlIG9yZGVyLgogICAgIFZlY3RvcjxO
b2RlKiwgMTAwPiBhbmNlc3RyeTsKLSAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUo
KSkKKyAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAg
ICAgICAgYW5jZXN0cnkuYXBwZW5kKHBhcmVudCk7CiAKICAgICAvLyBDYWxsIHB1c2hGdWxseUNs
aXBwZWRTdGF0ZSBvbiBlYWNoIG5vZGUgc3RhcnRpbmcgd2l0aCB0aGUgZWFybGllc3QgYW5jZXN0
b3IuCkBAIC00MjcsMTQgKzQyNywxNCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAg
ICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgaWYg
KCFuZXh0KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBwYXN0RW5kID0gTm9kZVRyYXZlcnNhbDo6
bmV4dChtX25vZGUpID09IG1fcGFzdEVuZE5vZGU7Ci0gICAgICAgICAgICAgICAgTm9kZSogcGFy
ZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgICAgIE5v
ZGUqIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAg
ICAgICAgICAgICB3aGlsZSAoIW5leHQgJiYgcGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoKHBhc3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgfHwgbV9l
bmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKHBhcmVudE5vZGUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBib29sIGhhdmVSZW5kZXJlciA9
IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50
Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
OworICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gbV9ub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlUmVuZGVyZXIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBleGl0Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9wb3NpdGlvbk5vZGUpIHsKQEAgLTEyMzUsNyArMTIzNSw3IEBAIHZvaWQgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKICAgICAgICAgICAgIC8vIEV4aXQgYWxs
IG90aGVyIGNvbnRhaW5lcnMuCiAgICAgICAgICAgICB3aGlsZSAoIW1fbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWFkdmFuY2VSZXNwZWN0aW5nUmFuZ2Uo
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpKQorICAgICAgICAgICAgICAgIGlmICghYWR2YW5j
ZVJlc3BlY3RpbmdSYW5nZShtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG1fZnVsbHlDbGlwcGVkU3Rh
Y2sucG9wKCk7CiAgICAgICAgICAgICAgICAgZXhpdE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCAyMTE4ZmI2Li4wNmEwYTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRDb250ZW50RnJhbWUo
RnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVChpbkRvY3VtZW50KCkpOwogICAgIG1fY29udGVudEZy
YW1lID0gZnJhbWU7CiAKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoQ29udGFpbmVyTm9k
ZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCkpCiAgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoKTsKIH0K
IApAQCAtNjksNyArNjksNyBAQCB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y2xlYXJDb250
ZW50RnJhbWUoKQogCiAgICAgbV9jb250ZW50RnJhbWUgPSAwOwogCi0gICAgZm9yIChDb250YWlu
ZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBub2RlLT5kZWNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCmluZGV4IGQwN2VjZTAuLmQzNDdlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgYm9vbCBjYW5Mb2FkRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lcikKICAgICB7Ci0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG93bmVyOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9
IG93bmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5jb250YWlucyhub2RlKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IGE4MWYzYmQuLjExMzBjNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMjM4LDExICsyMzgsMTEgQEAgRWxl
bWVudCogSFRNTFN0eWxlRWxlbWVudDo6c2NvcGluZ0VsZW1lbnQoKSBjb25zdAogICAgIC8vIEZJ
WE1FOiBUaGlzIHByb2JhYmx5IG5lZWRzIHRvIGJlIHJlZmluZWQgZm9yIHNjb3BlZCBzdHlsZXNo
ZWV0cyB3aXRoaW4gc2hhZG93IERPTS4KICAgICAvLyBBcyB3cml0dGVuLCBzdWNoIGEgc3R5bGVz
aGVldCBjb3VsZCBzdHlsZSB0aGUgaG9zdCBlbGVtZW50LCBhcyB3ZWxsIGFzIGNoaWxkcmVuIG9m
IHRoZSBob3N0LgogICAgIC8vIE9UT0gsIHRoaXMgcGF2ZXMgdGhlIHdheSBmb3IgYSA6Ym91bmQt
ZWxlbWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3Qg
PSBwYXJlbnRPckhvc3ROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnRPckhvc3QgfHwgIXBhcmVudE9y
SG9zdC0+aXNFbGVtZW50Tm9kZSgpKQorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9yU2hhZG93
SG9zdCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudE9yU2hhZG93
SG9zdCB8fCAhcGFyZW50T3JTaGFkb3dIb3N0LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnRPckhvc3QpOworICAgIHJldHVy
biB0b0VsZW1lbnQocGFyZW50T3JTaGFkb3dIb3N0KTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCmluZGV4IDU3YjFiNzkuLjIyNTE1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVv
RWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChOb2RlKiBub2RlKQogc3RhdGljIGlubGlu
ZSBIVE1MVmlkZW9FbGVtZW50KiBhbmNlc3RvclZpZGVvRWxlbWVudChOb2RlKiBub2RlKQogewog
ICAgIHdoaWxlIChub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkKLSAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVmlk
ZW9FbGVtZW50Kj4obm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCA2M2I0N2Q1Li4xZmE1YzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTgwMiw3ICs4MDIsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVycyhOb2RlKiBub2RlLCBW
ZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JgogICAgIC8vIFB1c2ggdGhpcyBub2RlIGFzIHRoZSBm
aXJzIGVsZW1lbnQuCiAgICAgYW5jZXN0b3JzLmFwcGVuZChub2RlKTsKICAgICBpZiAoaW5jbHVk
ZUFuY2VzdG9ycykgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0g
bm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICAgICAgYW5jZXN0b3JzLmFw
cGVuZChhbmNlc3Rvcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggMWUxMjE0YS4uZGNlMDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMjI2OCw3ICsyMjY4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE9ubHkgY2hhbmdlIHRoZSBmb2N1cyB3aGVuIGNsaWNraW5nIHNjcm9sbGJhcnMgaWYgaXQg
Y2FuIHRyYW5zZmVyZWQgdG8gYSBtb3VzZSBmb2N1c2FibGUgbm9kZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCAxZGUwMjIwLi5mMjgxODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3Vi
dGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVk
Tm9kZXMuaXRlbShpKTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiB2aXNpdGVkTm9kZXM7CiAgICAg
ICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKLSAgICAgICAgZm9yIChOb2RlKiB2aXNpdGVk
Tm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7
IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCkpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJl
c3VsdCBmb3IgYSBjb21tb24gYW5jZXN0b3IgZnJvbSBhbm90aGVyIGNhbmRpZGF0ZS4KICAgICAg
ICAgICAgIHJlc3BvbmRpbmdOb2RlID0gcmVzcG9uZGVyTWFwLmdldCh2aXNpdGVkTm9kZSk7CiAg
ICAgICAgICAgICBpZiAocmVzcG9uZGluZ05vZGUpCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3Vi
dGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgIGlmIChub2RlRmlsdGVyKHZpc2l0ZWROb2Rl
KSkgewogICAgICAgICAgICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlzaXRlZE5vZGU7CiAgICAg
ICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBjb2xsZWN0IHRoZSBhbmNl
c3RvcnMgb2YgdGhlIHJlc3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVkIGxhdGVyLgotICAgICAg
ICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2Rl
LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZp
c2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgSGFzaFNldDxOb2RlKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3Bv
bmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgx
LDcgKzI4MSw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGlu
dGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAg
ICAgICAgTm9kZSogcmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7Ci0gICAgICAgICAgICBOb2RlKiBw
YXJlbnQgPSBjYW5kaWRhdGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIE5vZGUq
IHBhcmVudCA9IGNhbmRpZGF0ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAg
ICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudCA9IHBhcmVudDsKICAgICAgICAgICAgICAgICBpZiAoZWRp
dGFibGVBbmNlc3RvcnMuY29udGFpbnMocmVwbGFjZW1lbnQpKSB7CkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWRO
b2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVkaXRhYmxlQW5jZXN0b3JzLmFkZChy
ZXBsYWNlbWVudCk7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYW5kaWRhdGUgPSByZXBs
YWNlbWVudDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCmluZGV4IGI1YmZkODMuLmVhY2JjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI2OCwxNCArMjY4LDE0IEBAIHZvaWQgSGl0VGVzdFJl
c3VsdDo6c2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpCiB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElu
bmVyTm9kZShOb2RlKiBuKQogewogICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQot
ICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb2RlID0gbjsKIH0KICAgICAKIHZvaWQg
SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqIG4pCiB7CiAgICAgaWYg
KG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgbV9p
bm5lck5vblNoYXJlZE5vZGUgPSBuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggYWRjMDcwOC4uYWI3MjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNjExLDcgKzYxMSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJl
bmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVu
ZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Ig
d2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFyZW50
T3JIb3N0Tm9kZSgpIDogbm9kZSgpOyB9CisgICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25z
dCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX25vZGUtPmRvY3VtZW50KCk7IH0KICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJl
dHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggNzIzNjJiOS4uYTNiNGFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzkxLDcgKzc5MSw3
IEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAgRWxlbWVudCog
Ym9keSA9IG5vZGUtPmRvY3VtZW50KCktPmJvZHkoKTsKICAgICBOb2RlKiBwYXJlbnQ7CiAgICAg
Zm9yIChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewotICAgICAgICBwYXJlbnQgPSBu
LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIHBhcmVudCA9IG4tPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgaWYgKG4gIT0gbm9kZSkKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCIgb2YgIik7CiAgICAgICAgIGlmIChwYXJlbnQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggODIzNTYyYi4uOWFjNWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0
aWMgdm9pZCBnZXRFbGVtZW50Q1RNKFNWR0VsZW1lbnQqIGVsZW1lbnQsIEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKQogICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQgPT0gc3RvcEF0RWxlbWVu
dCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
YjA1NDM2YS4uYTdlM2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkgY29u
c3QKICAgICAvLyBJZiB3ZSdyZSBsaXZpbmcgaW4gYSBzaGFkb3cgdHJlZSwgd2UncmUgYSA8c3Zn
PiBlbGVtZW50IHRoYXQgZ290IGNyZWF0ZWQgYXMgcmVwbGFjZW1lbnQKICAgICAvLyBmb3IgYSA8
c3ltYm9sPiBlbGVtZW50IG9yIGEgY2xvbmVkIDxzdmc+IGVsZW1lbnQgaW4gdGhlIHJlZmVyZW5j
ZWQgdHJlZS4gSW4gdGhhdCBjYXNlCiAgICAgLy8gd2UncmUgYWx3YXlzIGFuIGlubmVyIDxzdmc+
IGVsZW1lbnQuCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgcGFyZW50T3JIb3N0RWxlbWVu
dCgpICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgaWYgKGlz
SW5TaGFkb3dUcmVlKCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpICYmIHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEVsZW1lbnQgbWF5IG5vdCBiZSBpbiB0aGUgZG9jdW1lbnQsIHByZXRlbmQg
d2UncmUgb3V0ZXJtb3N0IGZvciB2aWV3cG9ydCgpLCBnZXRDVE0oKSwgZXRjLgpAQCAtMTg3LDEy
ICsxODcsMTIgQEAgdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBy
b290UGFyZW50KQogCiBTVkdTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQo
KSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPckhvc3ROb2RlKCk7Cisg
ICAgQ29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB3aGls
ZSAobikgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4obik7CiAKLSAgICAg
ICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTIwMiwxMiArMjAyLDEy
IEBAIFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OnZpZXdwb3J0RWxlbWVudCgpIGNvbnN0CiB7CiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyBzaGFkb3cgdHJlZSBzdXBwb3J0IC0gYXMgUmVuZGVy
U1ZHQ29udGFpbmVyIHVzZXMgdGhpcyBmdW5jdGlvbgogICAgIC8vIHRvIGRldGVybWluZSB0aGUg
Im92ZXJmbG93IiBwcm9wZXJ0eS4gPHVzZT4gb24gPHN5bWJvbD4gd291bGRuJ3Qgd29yayBvdGhl
cndoaXNlLgotICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAg
Q29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB3aGlsZSAo
bikgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSB8fCBuLT5o
YXNUYWdOYW1lKFNWR05hbWVzOjppbWFnZVRhZykgfHwgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6
c3ltYm9sVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bik7CiAKLSAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4t
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTQ0
MSw3ICs0NDEsNyBAQCBzdGF0aWMgYm9vbCBoYXNMb2FkTGlzdGVuZXIoRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAoZWxlbWVudC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRF
dmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZm9yIChlbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50T3JIb3N0RWxlbWVudCgpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFy
ZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9yIChlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0
b3ImIGVudHJ5ID0gZWxlbWVudC0+Z2V0RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRF
dmVudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnkuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChlbnRyeVtpXS51c2VDYXB0dXJlKQpAQCAtNDU4LDcgKzQ1OCw3
IEBAIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5k
UGFyZW50TG9hZEV2ZW50cykKICAgICB3aGlsZSAoY3VycmVudFRhcmdldCAmJiBjdXJyZW50VGFy
Z2V0LT5oYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSkgewogICAgICAgICBSZWZQdHI8RWxl
bWVudD4gcGFyZW50OwogICAgICAgICBpZiAoc2VuZFBhcmVudExvYWRFdmVudHMpCi0gICAgICAg
ICAgICBwYXJlbnQgPSBjdXJyZW50VGFyZ2V0LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IC8vIHNh
dmUgdGhlIG5leHQgcGFyZW50IHRvIGRpc3BhdGNoIHRvbyBpbmNhc2UgZGlzcGF0Y2hpbmcgdGhl
IGV2ZW50IGNoYW5nZXMgdGhlIHRyZWUKKyAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRUYXJn
ZXQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQg
dG8gZGlzcGF0Y2ggdG9vIGluY2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUg
dHJlZQogICAgICAgICBpZiAoaGFzTG9hZExpc3RlbmVyKGN1cnJlbnRUYXJnZXQuZ2V0KCkpKQog
ICAgICAgICAgICAgY3VycmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBjdXJyZW50VGFy
Z2V0ID0gKHBhcmVudCAmJiBwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKSA/IHN0YXRpY19wb2ludGVy
X2Nhc3Q8U1ZHRWxlbWVudD4ocGFyZW50KSA6IFJlZlB0cjxTVkdFbGVtZW50PigpOwpAQCAtNTg1
LDcgKzU4NSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0VsZW1lbnQ6OmN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
cigpLT5zdHlsZUZvckVsZW1lbnQodGhpcyk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSAw
OwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAg
ICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpKQog
ICAgICAgICAgICAgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAgICB9CkBAIC02MTcsNyAr
NjE3LDcgQEAgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
cHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVk
U3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSAwOwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50
KCkpIHsKKyAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVu
dCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggY2UxNjI1YS4u
ODkzZjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2UoKTsK
IAotICAgIHZvaWQgc2V0UGFyZW50T3JIb3N0Tm9kZShTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlKSB7IG1fcGFyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTsgfQorICAgIHZvaWQgc2V0UGFyZW50
T3JTaGFkb3dIb3N0Tm9kZShTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKSB7IG1fcGFyZW50
SW5zdGFuY2UgPSBpbnN0YW5jZTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQxYTIyYWEuLmZhZDAxOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRlCiAgICAgLy8gKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzI5NykKICAgICAvLyBOb3RlIHRoYXQg
d2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGZvcmVpZ25PYmplY3QgaW5zdGFudGlhdGlvbiB2
aWEgPHVzZT4sIGhlbmNlIGl0IGlzIHNhZmUKICAgICAvLyB0byB1c2UgcGFyZW50RWxlbWVudCgp
IGhlcmUuIElmIHRoYXQgY2hhbmdlcywgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVwZGF0ZWQgdG8g
dXNlCi0gICAgLy8gcGFyZW50T3JIb3N0RWxlbWVudCgpIGluc3RlYWQuCisgICAgLy8gcGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpIGluc3RlYWQuCiAgICAgRWxlbWVudCogYW5jZXN0b3IgPSBw
YXJlbnRFbGVtZW50KCk7CiAgICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0Vs
ZW1lbnQoKSkgewogICAgICAgICBpZiAoYW5jZXN0b3ItPnJlbmRlcmVyKCkgJiYgYW5jZXN0b3It
PnJlbmRlcmVyKCktPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAppbmRleCAxYmYxMzFiLi4xNjAzMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikKIHsKICAgICAvLyBVbmxpa2UgU1ZHU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgpLCB3ZSBzdGlsbCBjcmVhdGUgcmVuZGVyZXJz
LCBldmVuIGlmCiAgICAgLy8gZGlzcGxheSBpcyBzZXQgdG8gJ25vbmUnIC0gd2hpY2ggaXMgc3Bl
Y2lhbCB0byBTVkcgPGc+IGNvbnRhaW5lciBlbGVtZW50cy4KLSAgICByZXR1cm4gcGFyZW50T3JI
b3N0RWxlbWVudCgpICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCk7Cisg
ICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwCmluZGV4IDQxNWY3MGMuLmQ0ZjMxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBib29sIGlzVmlld3BvcnRFbGVtZW50
KE5vZGUqIG5vZGUpCiBTVkdFbGVtZW50KiBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3cG9ydEVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7
Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVu
dCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7
CisgICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc1ZpZXdwb3J0RWxlbWVudChjdXJyZW50KSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY3VycmVudCk7CiAgICAg
fQpAQCAtNTUsNyArNTUsNyBAQCBTVkdFbGVtZW50KiBTVkdMb2NhdGFibGU6OmZhcnRoZXN0Vmll
d3BvcnRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQpOwogICAgIFNWR0VsZW1lbnQqIGZhcnRoZXN0ID0gMDsKLSAgICBmb3IgKEVsZW1lbnQq
IGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IGN1cnJlbnQ7IGN1cnJl
bnQgPSBjdXJyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVsZW1lbnQq
IGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAg
ICAgaWYgKGlzVmlld3BvcnRFbGVtZW50KGN1cnJlbnQpKQogICAgICAgICAgICAgZmFydGhlc3Qg
PSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY3VycmVudCk7CiAgICAgfQpAQCAtODQsNyArODQs
NyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKFNWR0VsZW1lbnQq
IGVsZW1lbnQsIENUTVNjb3BlIG1vZGUsIFN0eQogICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAK
ICAgICBTVkdFbGVtZW50KiBzdG9wQXRFbGVtZW50ID0gbW9kZSA9PSBOZWFyZXN0Vmlld3BvcnRT
Y29wZSA/IG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoZWxlbWVudCkgOiAwOwotICAgIGZvciAoRWxl
bWVudCogY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVs
ZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9y
IChFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJy
ZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkp
IHsKICAgICAgICAgaWYgKCFjdXJyZW50RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4
IDUzNGY4NjQuLmJlZTRlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgLy8gU3BlYzog
U1ZHIGFsbG93cyBpbmNsdXNpb24gb2YgZWxlbWVudHMgZnJvbSBmb3JlaWduIG5hbWVzcGFjZXMg
YW55d2hlcmUKICAgICAvLyB3aXRoIHRoZSBTVkcgY29udGVudC4gSW4gZ2VuZXJhbCwgdGhlIFNW
RyB1c2VyIGFnZW50IHdpbGwgaW5jbHVkZSB0aGUgdW5rbm93bgogICAgIC8vIGVsZW1lbnRzIGlu
IHRoZSBET00gYnV0IHdpbGwgb3RoZXJ3aXNlIGlnbm9yZSB1bmtub3duIGVsZW1lbnRzLiAKLSAg
ICBpZiAoIXBhcmVudE9ySG9zdEVsZW1lbnQoKSB8fCBwYXJlbnRPckhvc3RFbGVtZW50KCktPmlz
U1ZHRWxlbWVudCgpKQorICAgIGlmICghcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIHx8IHBh
cmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVy
biBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGEzMjMyNzQuLmJmZDA5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMS0zMCAgQ2hhbmdodW4gS2FuZyAgPHRlbW9vY2hpbkBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9y
U2hhZG93SG9zdCogaW4gTm9kZS5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4MzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorCiAyMDEz
LTAxLTMwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAg
ICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzA0M2JiNy4uN2QwMWY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc3Miw3ICsxNzcyLDcg
QEAgdm9pZCBXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBv
aW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYKICNlbmRpZgogICAgICAgICAvLyBGaW5kIHRoZSBu
b2RlIHRvIGhpZ2hsaWdodC4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG5vZGUgcmVzcG9u
ZGluZyB0aGUgdGFwIGdlc3R1cmUsIGJlY2F1c2UgbWFueQogICAgICAgICAvLyBwYWdlcyBoYXMg
YSBnbG9iYWwgY2xpY2sgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdG8gaGlnaGxpZ2h0IHRo
ZSBib2R5LgotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBhZGp1c3RlZE5vZGU7IG5vZGU7IG5v
ZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gYWRqdXN0ZWROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBub2RlLT5p
c0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLS0gCjEuNy45
LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185437</attachid>
            <date>2013-01-30 01:47:11 -0800</date>
            <delta_ts>2013-01-30 09:44:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>57631</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSAxMmViNTBjM2NjOTRmODg4ZTc1OGNiNTJmNGFlMmQzZTExMTgwNTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMzQgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKy0KIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgICAgICAgICAgfCAgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwICAg
IHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAg
ICAgICAgfCAgIDE0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKyst
LS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMyArKy0tCiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgICAgICAgICAg
ICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggICAgICAgICAg
ICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcCAgICAgICAgICAgIHwgICAxMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgICAgICAgICAgIHwgICAgNiArLQogU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwICAgICB8ICAgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgIHwg
ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwICAgICAgICAg
ICAgfCAgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAg
ICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwICAgICAgfCAgICAyICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcCB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAxOCArLS0KIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwICAgICAgICAgICAgICAgIHwgICAgNiAr
LQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwICAgICAgICAgICAgfCAg
ICAyICstCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTAgKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCAgICAgIHwgICAgMiArLQogNDIgZmlsZXMgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKyksIDEx
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2NGRkMy4uOWFhYjdlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMy0wMS0zMCAgQ2hhbmdodW4gS2FuZyAgPHRlbW9vY2hp
bkBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRv
IHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9kZS5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OnJvb3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MpOgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckZpbHRlcjo6cHVzaFBhcmVudFN0YWNrRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JGaWx0ZXI6OnNldHVwUGFyZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JG
aWx0ZXI6OnB1c2hQYXJlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
U2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjb3Bl
UmVzb2x2ZXI6OnBvcCk6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXR0cjo6Y3JlYXRlVGV4dENoaWxkKToKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hpbGRUb0NvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omluc2VydGVk
SW50byk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpyZWxlYXNlUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGls
ZE5lZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udGFpbnNJbmNs
dWRpbmdTaGFkb3dET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udGFpbnNJbmNsdWRp
bmdIb3N0RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dmlydHVhbENvbXB1dGVk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzaG93Tm9kZVBhdGhGb3JUaGlzKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyYXZlcnNlVHJlZUFuZE1hcmspOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1RyZWVB
bmRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVPd25l
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3Vu
dEZvckluc2VydGlvbik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzVHJlZVNoYXJlZFBhcmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlR3VhcmFu
dGVlZEhvc3RGcmVlKToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBzZXVkb0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpob3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldEhvc3QpOgorICAgICAgICAqIGRvbS9UZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHVGV4dCk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0
Rm9jdXNlZE5vZGVJZk5lZWRlZCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGVwdGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0VXBGdWxseUNsaXBwZWRTdGFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpzZXRDb250ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyOjpj
YW5Mb2FkRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29waW5nRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFuY2VzdG9yVmlk
ZW9FbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlU3Vi
dGFyZ2V0TGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpnZW5lcmF0aW5nTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEVs
ZW1lbnRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxlbWVudDo6dmlld3BvcnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Omhhc0xvYWRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSk6CisgICAgICAgICog
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdMb2NhdGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xvY2F0YWJsZTo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKToKKwogMjAxMy0wMS0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA2ZWI5NmQ3Li5mM2I4ZTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjE4LDggKzIxOCw4
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIGlmIChub2RlLT5pbkRv
Y3VtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKTsKIAotICAgICAg
ICB3aGlsZSAobm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQotICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgd2hpbGUgKG5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDYyY2QyZDMuLjJlYzk3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9vdEZvckdDKE5v
ZGUqIG5vZGUpCiAgICAgICAgIG5vZGUgPSBvd25lckVsZW1lbnQ7CiAgICAgfQogCi0gICAgd2hp
bGUgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICB3aGlsZSAo
Tm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBu
b2RlID0gcGFyZW50OwogCiAgICAgcmV0dXJuIG5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
RmlsdGVyLmNwcAppbmRleCA2MWY5ZGZlLi5lYWY4ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckZpbHRlci5jcHAKQEAgLTUzLDggKzUzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbGxl
Y3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3IK
IHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnB1c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1lbnQqIHBhcmVu
dCkKIHsKICAgICBBU1NFUlQobV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOwotICAgIEFTU0VS
VChtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCBtX3BhcmVudFN0YWNrLmxhc3QoKS5lbGVtZW50
ID09IHBhcmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKTsKLSAgICBBU1NFUlQoIW1fcGFyZW50
U3RhY2suaXNFbXB0eSgpIHx8ICFwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSk7CisgICAg
QVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50U3RhY2subGFzdCgpLmVs
ZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpOworICAgIEFTU0VS
VCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnRTdGFja0ZyYW1lKHBh
cmVudCkpOwogICAgIFBhcmVudFN0YWNrRnJhbWUmIHBhcmVudEZyYW1lID0gbV9wYXJlbnRTdGFj
ay5sYXN0KCk7CiAgICAgLy8gTWl4IHRhZ3MsIGNsYXNzIG5hbWVzIGFuZCBpZHMgaW50byBzb21l
IHNvcnQgb2Ygd2VpcmQgYm91aWxsYWJhaXNzZS4KQEAgLTg3LDEzICs4NywxMyBAQCB2b2lkIFNl
bGVjdG9yRmlsdGVyOjpzZXR1cFBhcmVudFN0YWNrKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX3Bh
cmVudFN0YWNrLnNocmluaygwKTsKICAgICBtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlciA9IGFk
b3B0UHRyKG5ldyBCbG9vbUZpbHRlcjxibG9vbUZpbHRlcktleUJpdHM+KTsKICAgICAvLyBGYXN0
IHZlcnNpb24gaWYgcGFyZW50IGlzIGEgcm9vdCBlbGVtZW50OgotICAgIGlmICghcGFyZW50LT5w
YXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICBpZiAoIXBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpKSB7CiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgLy8gT3RoZXJ3aXNlIGNsaW1iIHVwIHRoZSB0cmVlLgogICAg
IFZlY3RvcjxFbGVtZW50KiwgMzA+IGFuY2VzdG9yczsKLSAgICBmb3IgKEVsZW1lbnQqIGFuY2Vz
dG9yID0gcGFyZW50OyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50T3JIb3N0
RWxlbWVudCgpKQorICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnQ7IGFuY2VzdG9y
OyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpCiAgICAg
ICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0b3IpOwogICAgIGZvciAoc2l6ZV90IG4gPSBhbmNl
c3RvcnMuc2l6ZSgpOyBuOyAtLW4pCiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKGFuY2Vz
dG9yc1tuIC0gMV0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnB1
c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KQogICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmll
ckZpbHRlcik7CiAgICAgLy8gV2UgbWF5IGdldCBpbnZva2VkIGZvciBzb21lIHJhbmRvbSBlbGVt
ZW50cyBpbiBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlLgogICAgIC8vIFBh
dXNlIG1haW50YWluaW5nIHRoZSBzdGFjayBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKG1fcGFyZW50
U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpCisg
ICAgaWYgKG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5wYXJlbnRPclNo
YWRvd0hvc3RFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBwdXNoUGFyZW50U3RhY2tG
cmFtZShwYXJlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDk1
NmI5ODQuLjE5ZWJjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogCiB2b2lkIFN0eWxlUmVzb2x2
ZXI6OnB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBjb25zdCBDb250
YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7
CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50c1BhcmVudCA9IHBhcmVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogCiAgICAgLy8gV2UgYXJlIG5vdCBhbHdheXMgaW52b2tl
ZCBjb25zaXN0ZW50bHkuIEZvciBleGFtcGxlLCBzY3JpcHQgZXhlY3V0aW9uIGNhbiBjYXVzZSB1
cyB0byBlbnRlcgogICAgIC8vIHN0eWxlIHJlY2FsYyBpbiB0aGUgbWlkZGxlIG9mIHRyZWUgYnVp
bGRpbmcuIFdlIG1heSBhbHNvIGJlIGludm9rZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSB0
cmVlLgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVudEVs
ZW1lbnQoRWxlbWVudCogcGFyZW50KQogCiAgICAgLy8gTm90ZTogV2UgbXVzdG4ndCBza2lwIFNo
YWRvd1Jvb3Qgbm9kZXMgZm9yIHRoZSBzY29wZSBzdGFjay4KICAgICBpZiAobV9zY29wZVJlc29s
dmVyKQotICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPnB1c2gocGFyZW50LCBwYXJlbnQtPnBhcmVu
dE9ySG9zdE5vZGUoKSk7CisgICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVzaChwYXJlbnQsIHBh
cmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVy
Ojpwb3BQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNS4uODQ1OGQ4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayhjb25zdCBDb250YWluZXJOb2RlKiBwYXJl
bnQpCiAKICAgICBtX3N0YWNrLnNocmluaygwKTsKICAgICBpbnQgYXV0aG9yU3R5bGVCb3VuZHNJ
bmRleCA9IDA7Ci0gICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsg
c2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnQ7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgUnVsZVNldCogcnVsZVNldCA9IHJ1
bGVTZXRGb3Ioc2NvcGUpOwogICAgICAgICBpZiAocnVsZVNldCkKICAgICAgICAgICAgIG1fc3Rh
Y2suYXBwZW5kKFN0YWNrRnJhbWUoc2NvcGUsIGF1dGhvclN0eWxlQm91bmRzSW5kZXgsIHJ1bGVT
ZXQpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cG9wKGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgICAgICAgICAgbV9zdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChz
Y29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCiAgICAgICAgICAgICAtLW1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsKLSAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgIG1fc3RhY2tQYXJlbnQgPSBzY29wZS0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDRmNDY1YTEuLjVkOWVkOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0
Q2hpbGQoKQogCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRoaW5nIGFwcGVuZENoaWxkKCkg
d291bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1faWdub3JlQ2hpbGRyZW5DaGFu
Z2VkIHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3JlIGVmZmljaWVudGx5LgotICAg
ICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICAgICAgdGV4dE5v
ZGUtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUodGhpcyk7CiAgICAgICAgIHNldEZpcnN0Q2hp
bGQodGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICBzZXRMYXN0Q2hpbGQodGV4dE5vZGUuZ2V0KCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKaW5kZXggYWI1OGQ2MS4uMTQ3NjJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cGFyZW50KCkKIE5vZGUqIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2Fs
RGV0YWlscyogZGV0YWlscykgY29uc3QKIHsKICAgICBpZiAobm9kZS0+aXNQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIHJl
dHVybiBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICBpZiAoIWNhbkNyb3Nz
VXBwZXJCb3VuZGFyeSgpICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIEFTU0VS
VCh0b1NoYWRvd1Jvb3Qobm9kZSktPmlzWW91bmdlc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggZDRmNzFiOC4uYjljMGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5z
ZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNl
CiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAg
Ly8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGlu
ZyBtdXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0
Tm9kZSgpKTsKKyAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTMxOCw3ICszMTgs
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbihOb2RlKiBuZXh0Q2hp
bGQsIE5vZGUqIG5ld0NoaWxkKQogICAgICAgICBBU1NFUlQobV9maXJzdENoaWxkID09IG5leHRD
aGlsZCk7CiAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5ld0NoaWxkOwogICAgIH0KLSAgICBuZXdD
aGlsZC0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICBuZXdDaGlsZC0+c2V0UGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSh0aGlzKTsKICAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5n
KHByZXYpOwogICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOwogfQpAQCAt
MzQ4LDcgKzM0OCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiB7CiAgICAgLy8gQ2hlY2sg
dGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNh
biBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMu
Ci0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBBU1NF
UlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCiAgICAgUmVmUHRy
PE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBib29sIENvbnRhaW5l
ck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJ
ZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11
dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2Rl
KCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7
CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNTQ3LDcgKzU0Nyw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxkLCBO
b2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG9sCiAKICAgICBvbGRDaGlsZC0+c2V0UHJldmlvdXNTaWJs
aW5nKDApOwogICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKLSAgICBvbGRDaGlsZC0+
c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICBvbGRDaGlsZC0+c2V0UGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgwKTsKIAogICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkQ2hpbGQpOwog
fQpAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4o
KQogICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzY3JlcGFuY3kgYmV0d2VlbiByZW1vdmVDaGls
ZCgpIGFuZCBpdHMgb3B0aW1pemVkIHZlcnNpb24gcmVtb3ZlQ2hpbGRyZW4oKS4KICAgICAgICAg
ICAgICAgICBuLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgICAgICAgICAgICAgbi0+c2V0
TmV4dFNpYmxpbmcoMCk7Ci0gICAgICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgw
KTsKKyAgICAgICAgICAgICAgICBuLT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKDApOwogICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQobi5nZXQoKSk7CiAKICAgICAg
ICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwpAQCAtNjQxLDcgKzY0MSw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvCiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3Qg
ImZsb2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRl
IGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQo
KSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKICAgICBlYyA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCmluZGV4IDEzMjFkZmQuLjliNzk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaApAQCAtMjY2LDcgKzI2Niw3IEBAIGlubGluZSBib29sIE5vZGU6Om5lZWRzU2hhZG93
VHJlZVdhbGtlcigpIGNvbnN0CiB7CiAgICAgaWYgKGdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fs
a2VyRmxhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmdldEZs
YWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggNjhlNzI4Zi4uYTI1Y2JmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTEwOCw3ICsx
MDgsNyBAQCBpbmxpbmUgdm9pZCByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIoR2Vu
ZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2Rl
LCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KIGlubGluZSB2b2lkIGFwcGVuZENoaWxkVG9D
b250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFp
bmVyKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKGNvbnRhaW5lcik7CisgICAg
Y2hpbGQtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoY29udGFpbmVyKTsKIAogICAgIEdlbmVy
aWNOb2RlKiBsYXN0Q2hpbGQgPSBjb250YWluZXItPmxhc3RDaGlsZCgpOwogICAgIGlmIChsYXN0
Q2hpbGQpIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAg
ICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIG4tPnNldFByZXZpb3Vz
U2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwotICAgICAgICAg
ICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgICAgIG4tPnNldFBhcmVudE9y
U2hhZG93SG9zdE5vZGUoMCk7CiAKICAgICAgICAgICAgIGlmICghbi0+cmVmQ291bnQoKSkgewog
I2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGFjOGU5ODYuLjkzYjZh
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTg0Nyw3ICs1ODQ3LDcgQEAgdm9pZCBE
b2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3UKICAgICAvLyBJZiBpdCBoYXNuJ3QsIHdlIGRvIG5vdCBuZWVkIHRv
IGRvIGFueXRoaW5nLgogICAgIE5vZGUqIG5ld0hvdmVyTm9kZSA9IGlubmVyRWxlbWVudEluRG9j
dW1lbnQ7CiAgICAgd2hpbGUgKG5ld0hvdmVyTm9kZSAmJiAhbmV3SG92ZXJOb2RlLT5yZW5kZXJl
cigpKQotICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdIb3Zlck5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKTsKKyAgICAgICAgbmV3SG92ZXJOb2RlID0gbmV3SG92ZXJOb2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGN1cnJlbnQgaG92ZXIgbm9kZS4KICAg
ICBzZXRIb3Zlck5vZGUobmV3SG92ZXJOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODU4
ZTQ1OS4uYTY0OGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1OTAsNyArMTU5MCw3IEBA
IGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIAogaW5saW5lIE5vZGU6
Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBt
X25vZGVGbGFncyh0eXBlKQotICAgICwgbV9wYXJlbnRPckhvc3ROb2RlKDApCisgICAgLCBtX3Bh
cmVudE9yU2hhZG93SG9zdE5vZGUoMCkKICAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50KQogICAg
ICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggMWFmZTI2ZC4uMTViN2FmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQ1Nyw3ICsy
NDU3LDcgQEAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIEVsZW1lbnQ6OnNwZWxsY2hlY2tBdHRy
aWJ1dGVTdGF0ZSgpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxl
bWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZv
ciAoY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgc3dpdGNoIChlbGVt
ZW50LT5zcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSkgewogICAgICAgICBjYXNlIFNwZWxsY2hl
Y2tBdHRyaWJ1dGVUcnVlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCBlMWJkNDZjLi44NjY0MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTg1OCw3ICs4
NTgsNyBAQCBpbmxpbmUgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBOb2RlOjpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZQogICAgIEFTU0VSVChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoaW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgc2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7Ci0g
ICAgaWYgKHBhcmVudE9ySG9zdE5vZGUoKS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICBpZiAocGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBzZXRGbGFn
KElzSW5TaGFkb3dUcmVlRmxhZyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZGNmNmIzYS4uMTBiOWM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjU2LDcgKzI1Niw3IEBAIGlubGluZSB2
b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCog
ZWxlbWVudCkKICAgICBBU1NFUlQoIWVsZW1lbnQtPm5leHRTaWJsaW5nKCkpOwogICAgIEFTU0VS
VCghZWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCkpOwogCi0gICAgZWxlbWVudC0+c2V0UGFyZW50
T3JIb3N0Tm9kZSgwKTsKKyAgICBlbGVtZW50LT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKDAp
OwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggNDExNjkwMS4uMThlNWQzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtODEwLDcgKzgxMCw3IEBAIGlubGluZSB2b2lkIE5vZGU6OnNldFN0eWxlQ2hhbmdlKFN0eWxl
Q2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogCiBpbmxpbmUgdm9pZCBOb2RlOjptYXJrQW5jZXN0b3Jz
V2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpCiB7Ci0gICAgZm9yIChDb250YWluZXJOb2RlKiBw
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsg
cCA9IHAtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBw
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygp
OyBwID0gcC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBwLT5zZXRDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLT5jaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKSkKQEAgLTEwMzUsNyArMTAzNSw3IEBAIGJvb2wgTm9kZTo6Y29udGFpbnMoY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKIAogYm9vbCBOb2RlOjpjb250YWluc0luY2x1ZGluZ1NoYWRvd0RP
TShjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUgPT0gdGhpcykKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwNTEsNyArMTA1MSw3IEBAIGJvb2wg
Tm9kZTo6Y29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSogbm9kZSkgY29u
c3QKICAgICAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnRGcmFnbWVudCgpICYmIHN0YXRpY19jYXN0
PGNvbnN0IERvY3VtZW50RnJhZ21lbnQqPihub2RlKS0+aXNUZW1wbGF0ZUNvbnRlbnQoKSkKICAg
ICAgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50Kj4obm9kZSktPmhvc3QoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKICNlbHNl
CkBAIC0xMTk2LDcgKzExOTYsNyBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKQogCiBSZW5kZXJTdHlsZSogTm9kZTo6dmlydHVhbENvbXB1dGVk
U3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKLSAgICByZXR1cm4gcGFy
ZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5jb21wdXRlZFN0eWxlKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpIDogMDsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpID8gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5jb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpIDogMDsKIH0KIAogaW50IE5vZGU6Om1heENoYXJhY3Rlck9mZnNldCgpIGNv
bnN0CkBAIC0xMjE5LDcgKzEyMTksNyBAQCBib29sIE5vZGU6OmNhblN0YXJ0U2VsZWN0aW9uKCkg
Y29uc3QKICAgICAgICAgaWYgKHN0eWxlLT51c2VyRHJhZygpID09IERSQUdfRUxFTUVOVCAmJiBz
dHlsZS0+dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0
Tm9kZSgpLT5jYW5TdGFydFNlbGVjdGlvbigpIDogdHJ1ZTsKKyAgICByZXR1cm4gcGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpID8gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5jYW5TdGFydFNlbGVj
dGlvbigpIDogdHJ1ZTsKIH0KIAogRWxlbWVudCogTm9kZTo6c2hhZG93SG9zdCgpIGNvbnN0CkBA
IC0xMjY0LDkgKzEyNjQsOSBAQCBDb250YWluZXJOb2RlKiBOb2RlOjpub25TaGFkb3dCb3VuZGFy
eVBhcmVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFk
b3dSb290KCkgPyBwYXJlbnQgOiAwOwogfQogCi1FbGVtZW50KiBOb2RlOjpwYXJlbnRPckhvc3RF
bGVtZW50KCkgY29uc3QKK0VsZW1lbnQqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUo
KTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7
CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xOTAxLDkgKzE5MDEs
OSBAQCB2b2lkIE5vZGU6OnNob3dOb2RlUGF0aEZvclRoaXMoKSBjb25zdAogewogICAgIFZlY3Rv
cjxjb25zdCBOb2RlKiwgMTY+IGNoYWluOwogICAgIGNvbnN0IE5vZGUqIG5vZGUgPSB0aGlzOwot
ICAgIHdoaWxlIChub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICB3aGlsZSAobm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIGNoYWluLmFwcGVuZChub2RlKTsK
LSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IGNoYWluLnNpemUoKTsgaW5kZXggPiAwOyAtLWluZGV4KSB7CiAgICAgICAgIGNv
bnN0IE5vZGUqIG5vZGUgPSBjaGFpbltpbmRleCAtIDFdOwpAQCAtMTk1OCw3ICsxOTU4LDcgQEAg
c3RhdGljIHZvaWQgdHJhdmVyc2VUcmVlQW5kTWFyayhjb25zdCBTdHJpbmcmIGJhc2VJbmRlbnQs
IGNvbnN0IE5vZGUqIHJvb3ROb2RlLAogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgaW5kZW50Owog
ICAgICAgICBpbmRlbnQuYXBwZW5kKGJhc2VJbmRlbnQpOwotICAgICAgICBmb3IgKGNvbnN0IE5v
ZGUqIHRtcE5vZGUgPSBub2RlOyB0bXBOb2RlICYmIHRtcE5vZGUgIT0gcm9vdE5vZGU7IHRtcE5v
ZGUgPSB0bXBOb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIGZvciAoY29uc3QgTm9k
ZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1wTm9kZSAhPSByb290Tm9kZTsgdG1wTm9k
ZSA9IHRtcE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgICAgIGluZGVu
dC5hcHBlbmQoJ1x0Jyk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBpbmRlbnQudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbm9kZS0+c2hvd05vZGUoKTsKQEAgLTE5
NzUsOCArMTk3NSw4IEBAIHZvaWQgTm9kZTo6c2hvd1RyZWVBbmRNYXJrKGNvbnN0IE5vZGUqIG1h
cmtlZE5vZGUxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvCiB7CiAgICAgY29uc3QgTm9k
ZSogcm9vdE5vZGU7CiAgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUgKG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSAmJiAhbm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKLSAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQor
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIHJvb3RO
b2RlID0gbm9kZTsKIAogICAgIFN0cmluZyBzdGFydGluZ0luZGVudDsKQEAgLTE5OTcsOSArMTk5
Nyw5IEBAIHZvaWQgTm9kZTo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0CiAgICAgc3RybmNweShidWZmZXIsIHJlc3VsdC51dGY4KCkuZGF0YSgp
LCBsZW5ndGggLSAxKTsKIH0KIAotc3RhdGljIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE9y
RnJhbWVPd25lcihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIENvbnRhaW5lck5vZGUqIHBhcmVu
dE9yU2hhZG93SG9zdE9yRnJhbWVPd25lcihjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbnRh
aW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgaWYg
KCFwYXJlbnQgJiYgbm9kZS0+ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
KQogICAgICAgICBwYXJlbnQgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1l
bnQoKTsKICAgICByZXR1cm4gcGFyZW50OwpAQCAtMjAyNyw4ICsyMDI3LDggQEAgc3RhdGljIHZv
aWQgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBOb2RlKiBt
YXJrZWROb2RlLCBjb24KIHZvaWQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBj
b25zdAogewogICAgIE5vZGUqIHJvb3ROb2RlID0gY29uc3RfY2FzdDxOb2RlKj4odGhpcyk7Ci0g
ICAgd2hpbGUgKHBhcmVudE9ySG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSkpCi0gICAgICAgIHJv
b3ROb2RlID0gcGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKTsKKyAgICB3aGlsZSAo
cGFyZW50T3JTaGFkb3dIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKKyAgICAgICAgcm9vdE5v
ZGUgPSBwYXJlbnRPclNoYWRvd0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOwogICAgIHNob3dT
dWJUcmVlQWNyb3NzRnJhbWUocm9vdE5vZGUsIHRoaXMsICIiKTsKIH0KIApAQCAtMjA2MSw3ICsy
MDYxLDcgQEAgdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMpIGNvbnN0CiAKIE5vZGUqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2Vs
ZigpCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5v
ZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgLy8gRm9yIGlt
YWdlbWFwcywgdGhlIGVuY2xvc2luZyBsaW5rIG5vZGUgaXMgdGhlIGFzc29jaWF0ZWQgYXJlYSBl
bGVtZW50IG5vdCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBTbyB3ZSBkb24ndCBsZXQg
aW1hZ2VzIGJlIHRoZSBlbmNsb3NpbmdMaW5rTm9kZSwgZXZlbiB0aG91Z2ggaXNMaW5rIHNvbWV0
aW1lcyByZXR1cm5zIHRydWUKICAgICAgICAgLy8gZm9yIHRoZW0uCkBAIC0yNDkwLDcgKzI0OTAs
NyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMg
c28gdGhhdCA8c2VsZWN0PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgogICAgICAgICBOb2RlKiBzdGFy
dE5vZGUgPSB0aGlzOwogICAgICAgICB3aGlsZSAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogICAgICAgICAKICAgICAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKQEAgLTI1ODMsNyArMjU4Myw3IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkRPTSk7CiAgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhcmVudE9ySG9zdE5vZGUpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV90cmVlU2NvcGUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9wcmV2aW91cyk7CkBAIC0yNjI3LDcgKzI2MjcsNyBAQCB2b2lkIE5v
ZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25z
dAogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoTm9kZSogbm9k
ZSA9IHBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKSkKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIG5vZGUt
PmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwogfQogCkBAIC0yNjM4LDcg
KzI2MzgsNyBAQCB2b2lkIE5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3Vu
dEZvckluc2VydGlvbigpIGNvbnN0CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKSkKICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3Vu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkyZmIyYjkuLjAwOTY2ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtMjc1LDEwICsyNzUsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFkb3dU
cmVlUm9vdE5vZGUoKTsKIAogICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVlIGhvc3Qu
Ci0gICAgLy8gRklYTUU6IFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHJlbmFtZWQgcGFyZW50T3JT
aGFkb3dIb3N0KgotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdE5vZGUoKSBjb25zdDsK
LSAgICBFbGVtZW50KiBwYXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQ
YXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3Q7CisgICAgRWxlbWVudCogcGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShD
b250YWluZXJOb2RlKik7CiAgICAgTm9kZSogaGlnaGVzdEFuY2VzdG9yKCkgY29uc3Q7CiAKICAg
ICAvLyBVc2Ugd2hlbiBpdCdzIGd1YXJhbnRlZWQgdG8gdGhhdCBzaGFkb3dIb3N0IGlzIDAuCkBA
IC03NzgsNyArNzc3LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxO
b2RlPjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKLSAgICBib29sIGhhc1RyZWVTaGFy
ZWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiAhIXBhcmVudE9ySG9zdE5vZGUoKTsgfQorICAgIGJv
b2wgaGFzVHJlZVNoYXJlZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOyB9CiAKICAgICBlbnVtIEVkaXRhYmxlTGV2ZWwgeyBFZGl0YWJsZSwgUmljaGx5
RWRpdGFibGUgfTsKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZUxldmVsLCBV
c2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUp
IGNvbnN0OwpAQCAtODEyLDcgKzgxMSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpOwogCiAgICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKLSAgICBDb250YWluZXJO
b2RlKiBtX3BhcmVudE9ySG9zdE5vZGU7CisgICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnRPclNo
YWRvd0hvc3ROb2RlOwogICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgTm9kZSogbV9w
cmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CkBAIC04NDgsMjcgKzg0NywyNyBAQCBpbmxpbmUg
dm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VS
TCYgdXJsKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwogfQogCi1pbmxpbmUgdm9pZCBOb2RlOjpz
ZXRQYXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqIHBhcmVudCkKK2lubGluZSB2b2lkIE5v
ZGU6OnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoQ29udGFpbmVyTm9kZSogcGFyZW50KQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9wYXJlbnRPckhvc3ROb2RlID0gcGFy
ZW50OworICAgIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSA9IHBhcmVudDsKIH0KIAotaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE5vZGUoKSBjb25zdAoraW5saW5lIENv
bnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSBjb25zdAogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpOwotICAgIHJldHVybiBtX3BhcmVudE9y
SG9zdE5vZGU7CisgICAgcmV0dXJuIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZTsKIH0KIAogaW5s
aW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVy
biBpc1NoYWRvd1Jvb3QoKSA/IDAgOiBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAgcmV0dXJuIGlz
U2hhZG93Um9vdCgpID8gMCA6IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIH0KIAogaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25z
dAogewogICAgIEFTU0VSVCghaXNTaGFkb3dSb290KCkpOwotICAgIHJldHVybiBwYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIH0KIAogaW5s
aW5lIHZvaWQgTm9kZTo6cmVhdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CmluZGV4IDc2MWVjNmYuLmZjMDMyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTU4LDEzICs1OCwxMyBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1l
bnQqIHBhcmVudCwgUHNldWRvSWQgcHNldWRvSWQpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lk
KQogewogICAgIEFTU0VSVChwc2V1ZG9JZCAhPSBOT1BTRVVETyk7Ci0gICAgc2V0UGFyZW50T3JI
b3N0Tm9kZShwYXJlbnQpOworICAgIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUocGFyZW50KTsK
ICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gUHNldWRvRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCiB7Ci0gICAgcmV0dXJu
IHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUo
bV9wc2V1ZG9JZCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+cmVu
ZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCk7CiB9CiAKIHZvaWQgUHNl
dWRvRWxlbWVudDo6YXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDBmODU5MjIu
LjYzOGJjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMTE5LDEyICsxMTksMTIgQEAg
cHJpdmF0ZToKIAogaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3Q6Omhvc3QoKSBjb25zdAogewot
ICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICByZXR1cm4gdG9F
bGVtZW50KHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiB9CiAKIGlubGluZSB2b2lkIFNoYWRv
d1Jvb3Q6OnNldEhvc3QoRWxlbWVudCogaG9zdCkKIHsKLSAgICBzZXRQYXJlbnRPckhvc3ROb2Rl
KGhvc3QpOworICAgIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoaG9zdCk7CiAgICAgaWYgKGhv
c3QpCiAgICAgICAgIHNldFBhcmVudFRyZWVTY29wZShob3N0LT50cmVlU2NvcGUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAKaW5kZXggYjViZGFiYi4uNzFmMWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAt
MjUzLDggKzI1Myw4IEBAIHN0YXRpYyBib29sIGlzU1ZHU2hhZG93VGV4dChUZXh0KiB0ZXh0KQog
CiBzdGF0aWMgYm9vbCBpc1NWR1RleHQoVGV4dCogdGV4dCkKIHsKLSAgICBOb2RlKiBwYXJlbnRP
ckhvc3ROb2RlID0gdGV4dC0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIHJldHVybiBwYXJlbnRP
ckhvc3ROb2RlLT5pc1NWR0VsZW1lbnQoKSAmJiAhcGFyZW50T3JIb3N0Tm9kZS0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZyk7CisgICAgTm9kZSogcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSA9IHRleHQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKKyAgICByZXR1cm4gcGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZS0+aXNTVkdFbGVtZW50KCkgJiYgIXBhcmVudE9yU2hhZG93SG9z
dE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggOTVhMzQ2
NS4uYTg5M2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE4ODAsNyArMTg4MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEZvY3VzZWROb2Rl
SWZOZWVkZWQoKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCktPnNldEZvY3VzZWROb2RlKHRhcmdldCwgbV9mcmFtZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LT5wYXJl
bnRPckhvc3ROb2RlKCk7IAorICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIH0KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
c2V0Rm9jdXNlZE5vZGUoMCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IGI2MjExNzEuLjc3MGFjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB1bnNpZ25lZCBCaXRTdGFjazo6c2l6
ZSgpIGNvbnN0CiBzdGF0aWMgdW5zaWduZWQgZGVwdGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMo
Tm9kZSogbm9kZSkKIHsKICAgICB1bnNpZ25lZCBkZXB0aCA9IDA7Ci0gICAgZm9yIChOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpCiAgICAgICAgICsrZGVwdGg7CiAgICAgcmV0dXJuIGRlcHRoOwogfQpA
QCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBOb2RlKiBuZXh0SW5QcmVPcmRlckNyb3NzaW5nU2hh
ZG93Qm91bmRhcmllcyhOb2RlKiByYW5nZUVuZENvbnRhaW5lciwgaW50CiAgICAgICAgIGlmIChO
b2RlKiBuZXh0ID0gcmFuZ2VFbmRDb250YWluZXItPmNoaWxkTm9kZShyYW5nZUVuZE9mZnNldCkp
CiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9Ci0gICAgZm9yIChOb2RlKiBub2RlID0g
cmFuZ2VFbmRDb250YWluZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkp
IHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZUVuZENvbnRhaW5lcjsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBpZiAoTm9kZSogbmV4
dCA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9
CkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHZvaWQgc2V0VXBGdWxseUNsaXBwZWRTdGFjayhC
aXRTdGFjayYgc3RhY2ssIE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gUHV0IHRoZSBub2RlcyBpbiBh
IHZlY3RvciBzbyB3ZSBjYW4gaXRlcmF0ZSBpbiByZXZlcnNlIG9yZGVyLgogICAgIFZlY3RvcjxO
b2RlKiwgMTAwPiBhbmNlc3RyeTsKLSAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUo
KSkKKyAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAg
ICAgICAgYW5jZXN0cnkuYXBwZW5kKHBhcmVudCk7CiAKICAgICAvLyBDYWxsIHB1c2hGdWxseUNs
aXBwZWRTdGF0ZSBvbiBlYWNoIG5vZGUgc3RhcnRpbmcgd2l0aCB0aGUgZWFybGllc3QgYW5jZXN0
b3IuCkBAIC00MjcsMTQgKzQyNywxNCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAg
ICAgICAgICAgICBuZXh0ID0gbV9ub2RlLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgaWYg
KCFuZXh0KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBwYXN0RW5kID0gTm9kZVRyYXZlcnNhbDo6
bmV4dChtX25vZGUpID09IG1fcGFzdEVuZE5vZGU7Ci0gICAgICAgICAgICAgICAgTm9kZSogcGFy
ZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgICAgIE5v
ZGUqIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAg
ICAgICAgICAgICB3aGlsZSAoIW5leHQgJiYgcGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoKHBhc3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgfHwgbV9l
bmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKHBhcmVudE5vZGUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBib29sIGhhdmVSZW5kZXJlciA9
IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50
Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
OworICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gbV9ub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlUmVuZGVyZXIpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBleGl0Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9wb3NpdGlvbk5vZGUpIHsKQEAgLTEyMzUsNyArMTIzNSw3IEBAIHZvaWQgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKICAgICAgICAgICAgIC8vIEV4aXQgYWxs
IG90aGVyIGNvbnRhaW5lcnMuCiAgICAgICAgICAgICB3aGlsZSAoIW1fbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWFkdmFuY2VSZXNwZWN0aW5nUmFuZ2Uo
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpKQorICAgICAgICAgICAgICAgIGlmICghYWR2YW5j
ZVJlc3BlY3RpbmdSYW5nZShtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG1fZnVsbHlDbGlwcGVkU3Rh
Y2sucG9wKCk7CiAgICAgICAgICAgICAgICAgZXhpdE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCAyMTE4ZmI2Li4wNmEwYTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRDb250ZW50RnJhbWUo
RnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVChpbkRvY3VtZW50KCkpOwogICAgIG1fY29udGVudEZy
YW1lID0gZnJhbWU7CiAKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoQ29udGFpbmVyTm9k
ZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCkpCiAgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoKTsKIH0K
IApAQCAtNjksNyArNjksNyBAQCB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y2xlYXJDb250
ZW50RnJhbWUoKQogCiAgICAgbV9jb250ZW50RnJhbWUgPSAwOwogCi0gICAgZm9yIChDb250YWlu
ZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBub2RlLT5kZWNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCmluZGV4IGQwN2VjZTAuLmQzNDdlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgYm9vbCBjYW5Mb2FkRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lcikKICAgICB7Ci0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG93bmVyOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9
IG93bmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoZGlzYWJsZWRTdWJ0cmVlUm9vdHMoKS5jb250YWlucyhub2RlKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IGE4MWYzYmQuLjExMzBjNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMjM4LDExICsyMzgsMTEgQEAgRWxl
bWVudCogSFRNTFN0eWxlRWxlbWVudDo6c2NvcGluZ0VsZW1lbnQoKSBjb25zdAogICAgIC8vIEZJ
WE1FOiBUaGlzIHByb2JhYmx5IG5lZWRzIHRvIGJlIHJlZmluZWQgZm9yIHNjb3BlZCBzdHlsZXNo
ZWV0cyB3aXRoaW4gc2hhZG93IERPTS4KICAgICAvLyBBcyB3cml0dGVuLCBzdWNoIGEgc3R5bGVz
aGVldCBjb3VsZCBzdHlsZSB0aGUgaG9zdCBlbGVtZW50LCBhcyB3ZWxsIGFzIGNoaWxkcmVuIG9m
IHRoZSBob3N0LgogICAgIC8vIE9UT0gsIHRoaXMgcGF2ZXMgdGhlIHdheSBmb3IgYSA6Ym91bmQt
ZWxlbWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3Qg
PSBwYXJlbnRPckhvc3ROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnRPckhvc3QgfHwgIXBhcmVudE9y
SG9zdC0+aXNFbGVtZW50Tm9kZSgpKQorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9yU2hhZG93
SG9zdCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudE9yU2hhZG93
SG9zdCB8fCAhcGFyZW50T3JTaGFkb3dIb3N0LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnRPckhvc3QpOworICAgIHJldHVy
biB0b0VsZW1lbnQocGFyZW50T3JTaGFkb3dIb3N0KTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCmluZGV4IDU3YjFiNzkuLjIyNTE1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVv
RWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChOb2RlKiBub2RlKQogc3RhdGljIGlubGlu
ZSBIVE1MVmlkZW9FbGVtZW50KiBhbmNlc3RvclZpZGVvRWxlbWVudChOb2RlKiBub2RlKQogewog
ICAgIHdoaWxlIChub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSkKLSAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVmlk
ZW9FbGVtZW50Kj4obm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCA2M2I0N2Q1Li4xZmE1YzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTgwMiw3ICs4MDIsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVycyhOb2RlKiBub2RlLCBW
ZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JgogICAgIC8vIFB1c2ggdGhpcyBub2RlIGFzIHRoZSBm
aXJzIGVsZW1lbnQuCiAgICAgYW5jZXN0b3JzLmFwcGVuZChub2RlKTsKICAgICBpZiAoaW5jbHVk
ZUFuY2VzdG9ycykgewotICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0g
bm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICAgICAgYW5jZXN0b3JzLmFw
cGVuZChhbmNlc3Rvcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggMWUxMjE0YS4uZGNlMDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMjI2OCw3ICsyMjY4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE9ubHkgY2hhbmdlIHRoZSBmb2N1cyB3aGVuIGNsaWNraW5nIHNjcm9sbGJhcnMgaWYgaXQg
Y2FuIHRyYW5zZmVyZWQgdG8gYSBtb3VzZSBmb2N1c2FibGUgbm9kZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCAxZGUwMjIwLi5mMjgxODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3Vi
dGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgTm9kZSogY29uc3Qgbm9kZSA9IGludGVyc2VjdGVk
Tm9kZXMuaXRlbShpKTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiB2aXNpdGVkTm9kZXM7CiAgICAg
ICAgIE5vZGUqIHJlc3BvbmRpbmdOb2RlID0gMDsKLSAgICAgICAgZm9yIChOb2RlKiB2aXNpdGVk
Tm9kZSA9IG5vZGU7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiB2aXNpdGVkTm9kZSA9IG5vZGU7
IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCkpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJl
c3VsdCBmb3IgYSBjb21tb24gYW5jZXN0b3IgZnJvbSBhbm90aGVyIGNhbmRpZGF0ZS4KICAgICAg
ICAgICAgIHJlc3BvbmRpbmdOb2RlID0gcmVzcG9uZGVyTWFwLmdldCh2aXNpdGVkTm9kZSk7CiAg
ICAgICAgICAgICBpZiAocmVzcG9uZGluZ05vZGUpCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBj
b21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3Vi
dGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgIGlmIChub2RlRmlsdGVyKHZpc2l0ZWROb2Rl
KSkgewogICAgICAgICAgICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlzaXRlZE5vZGU7CiAgICAg
ICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBjb2xsZWN0IHRoZSBhbmNl
c3RvcnMgb2YgdGhlIHJlc3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVkIGxhdGVyLgotICAgICAg
ICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2Rl
LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZp
c2l0ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgSGFzaFNldDxOb2RlKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3Bv
bmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgx
LDcgKzI4MSw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGlu
dGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAg
ICAgICAgTm9kZSogcmVwbGFjZW1lbnQgPSBjYW5kaWRhdGU7Ci0gICAgICAgICAgICBOb2RlKiBw
YXJlbnQgPSBjYW5kaWRhdGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIE5vZGUq
IHBhcmVudCA9IGNhbmRpZGF0ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAg
ICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudCA9IHBhcmVudDsKICAgICAgICAgICAgICAgICBpZiAoZWRp
dGFibGVBbmNlc3RvcnMuY29udGFpbnMocmVwbGFjZW1lbnQpKSB7CkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWRO
b2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVkaXRhYmxlQW5jZXN0b3JzLmFkZChy
ZXBsYWNlbWVudCk7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYW5kaWRhdGUgPSByZXBs
YWNlbWVudDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCmluZGV4IGI1YmZkODMuLmVhY2JjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI2OCwxNCArMjY4LDE0IEBAIHZvaWQgSGl0VGVzdFJl
c3VsdDo6c2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpCiB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElu
bmVyTm9kZShOb2RlKiBuKQogewogICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQot
ICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb2RlID0gbjsKIH0KICAgICAKIHZvaWQg
SGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqIG4pCiB7CiAgICAgaWYg
KG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgbV9p
bm5lck5vblNoYXJlZE5vZGUgPSBuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggYWRjMDcwOC4uYWI3MjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNjExLDcgKzYxMSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1
cm5zIHRoZSBzdHlsZWQgbm9kZSB0aGF0IGNhdXNlZCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIHJl
bmRlcmVyLgogICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgbm9kZSgpIGV4Y2VwdCBmb3IgcmVu
ZGVyZXJzIG9mIDpiZWZvcmUgYW5kIDphZnRlcgogICAgIC8vIHBzZXVkbyBlbGVtZW50cyBmb3Ig
d2hpY2ggdGhlaXIgcGFyZW50IG5vZGUgaXMgcmV0dXJuZWQuCi0gICAgTm9kZSogZ2VuZXJhdGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFyZW50
T3JIb3N0Tm9kZSgpIDogbm9kZSgpOyB9CisgICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25z
dCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG5vZGUoKS0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX25vZGUtPmRvY3VtZW50KCk7IH0KICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJl
dHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggNzIzNjJiOS4uYTNiNGFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNzkxLDcgKzc5MSw3
IEBAIHN0YXRpYyBTdHJpbmcgbm9kZVBvc2l0aW9uKE5vZGUqIG5vZGUpCiAgICAgRWxlbWVudCog
Ym9keSA9IG5vZGUtPmRvY3VtZW50KCktPmJvZHkoKTsKICAgICBOb2RlKiBwYXJlbnQ7CiAgICAg
Zm9yIChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewotICAgICAgICBwYXJlbnQgPSBu
LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIHBhcmVudCA9IG4tPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgaWYgKG4gIT0gbm9kZSkKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCIgb2YgIik7CiAgICAgICAgIGlmIChwYXJlbnQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggODIzNTYyYi4uOWFjNWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0
aWMgdm9pZCBnZXRFbGVtZW50Q1RNKFNWR0VsZW1lbnQqIGVsZW1lbnQsIEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtKQogICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQgPT0gc3RvcEF0RWxlbWVu
dCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
YjA1NDM2YS4uYTdlM2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkgY29u
c3QKICAgICAvLyBJZiB3ZSdyZSBsaXZpbmcgaW4gYSBzaGFkb3cgdHJlZSwgd2UncmUgYSA8c3Zn
PiBlbGVtZW50IHRoYXQgZ290IGNyZWF0ZWQgYXMgcmVwbGFjZW1lbnQKICAgICAvLyBmb3IgYSA8
c3ltYm9sPiBlbGVtZW50IG9yIGEgY2xvbmVkIDxzdmc+IGVsZW1lbnQgaW4gdGhlIHJlZmVyZW5j
ZWQgdHJlZS4gSW4gdGhhdCBjYXNlCiAgICAgLy8gd2UncmUgYWx3YXlzIGFuIGlubmVyIDxzdmc+
IGVsZW1lbnQuCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgcGFyZW50T3JIb3N0RWxlbWVu
dCgpICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgaWYgKGlz
SW5TaGFkb3dUcmVlKCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpICYmIHBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEVsZW1lbnQgbWF5IG5vdCBiZSBpbiB0aGUgZG9jdW1lbnQsIHByZXRlbmQg
d2UncmUgb3V0ZXJtb3N0IGZvciB2aWV3cG9ydCgpLCBnZXRDVE0oKSwgZXRjLgpAQCAtMTg3LDEy
ICsxODcsMTIgQEAgdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBy
b290UGFyZW50KQogCiBTVkdTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQo
KSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPckhvc3ROb2RlKCk7Cisg
ICAgQ29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB3aGls
ZSAobikgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4obik7CiAKLSAgICAg
ICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTIwMiwxMiArMjAyLDEy
IEBAIFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OnZpZXdwb3J0RWxlbWVudCgpIGNvbnN0CiB7CiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyBzaGFkb3cgdHJlZSBzdXBwb3J0IC0gYXMgUmVuZGVy
U1ZHQ29udGFpbmVyIHVzZXMgdGhpcyBmdW5jdGlvbgogICAgIC8vIHRvIGRldGVybWluZSB0aGUg
Im92ZXJmbG93IiBwcm9wZXJ0eS4gPHVzZT4gb24gPHN5bWJvbD4gd291bGRuJ3Qgd29yayBvdGhl
cndoaXNlLgotICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAg
Q29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB3aGlsZSAo
bikgewogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSB8fCBuLT5o
YXNUYWdOYW1lKFNWR05hbWVzOjppbWFnZVRhZykgfHwgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6
c3ltYm9sVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bik7CiAKLSAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4t
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTQ0
MSw3ICs0NDEsNyBAQCBzdGF0aWMgYm9vbCBoYXNMb2FkTGlzdGVuZXIoRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAoZWxlbWVudC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRF
dmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZm9yIChlbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50T3JIb3N0RWxlbWVudCgpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFy
ZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9yIChlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0
b3ImIGVudHJ5ID0gZWxlbWVudC0+Z2V0RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRF
dmVudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnkuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChlbnRyeVtpXS51c2VDYXB0dXJlKQpAQCAtNDU4LDcgKzQ1OCw3
IEBAIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5k
UGFyZW50TG9hZEV2ZW50cykKICAgICB3aGlsZSAoY3VycmVudFRhcmdldCAmJiBjdXJyZW50VGFy
Z2V0LT5oYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSkgewogICAgICAgICBSZWZQdHI8RWxl
bWVudD4gcGFyZW50OwogICAgICAgICBpZiAoc2VuZFBhcmVudExvYWRFdmVudHMpCi0gICAgICAg
ICAgICBwYXJlbnQgPSBjdXJyZW50VGFyZ2V0LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IC8vIHNh
dmUgdGhlIG5leHQgcGFyZW50IHRvIGRpc3BhdGNoIHRvbyBpbmNhc2UgZGlzcGF0Y2hpbmcgdGhl
IGV2ZW50IGNoYW5nZXMgdGhlIHRyZWUKKyAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRUYXJn
ZXQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQg
dG8gZGlzcGF0Y2ggdG9vIGluY2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUg
dHJlZQogICAgICAgICBpZiAoaGFzTG9hZExpc3RlbmVyKGN1cnJlbnRUYXJnZXQuZ2V0KCkpKQog
ICAgICAgICAgICAgY3VycmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBjdXJyZW50VGFy
Z2V0ID0gKHBhcmVudCAmJiBwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKSA/IHN0YXRpY19wb2ludGVy
X2Nhc3Q8U1ZHRWxlbWVudD4ocGFyZW50KSA6IFJlZlB0cjxTVkdFbGVtZW50PigpOwpAQCAtNTg1
LDcgKzU4NSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0VsZW1lbnQ6OmN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
cigpLT5zdHlsZUZvckVsZW1lbnQodGhpcyk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSAw
OwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAg
ICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpKQog
ICAgICAgICAgICAgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAgICB9CkBAIC02MTcsNyAr
NjE3LDcgQEAgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
cHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJuIEVsZW1lbnQ6OmNvbXB1dGVk
U3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAKICAgICBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSAwOwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPckhvc3RFbGVtZW50
KCkpIHsKKyAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVu
dCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgcGFyZW50U3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggY2UxNjI1YS4u
ODkzZjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2UoKTsK
IAotICAgIHZvaWQgc2V0UGFyZW50T3JIb3N0Tm9kZShTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlKSB7IG1fcGFyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTsgfQorICAgIHZvaWQgc2V0UGFyZW50
T3JTaGFkb3dIb3N0Tm9kZShTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKSB7IG1fcGFyZW50
SW5zdGFuY2UgPSBpbnN0YW5jZTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQxYTIyYWEuLmZhZDAxOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRlCiAgICAgLy8gKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzI5NykKICAgICAvLyBOb3RlIHRoYXQg
d2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGZvcmVpZ25PYmplY3QgaW5zdGFudGlhdGlvbiB2
aWEgPHVzZT4sIGhlbmNlIGl0IGlzIHNhZmUKICAgICAvLyB0byB1c2UgcGFyZW50RWxlbWVudCgp
IGhlcmUuIElmIHRoYXQgY2hhbmdlcywgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVwZGF0ZWQgdG8g
dXNlCi0gICAgLy8gcGFyZW50T3JIb3N0RWxlbWVudCgpIGluc3RlYWQuCisgICAgLy8gcGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpIGluc3RlYWQuCiAgICAgRWxlbWVudCogYW5jZXN0b3IgPSBw
YXJlbnRFbGVtZW50KCk7CiAgICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0Vs
ZW1lbnQoKSkgewogICAgICAgICBpZiAoYW5jZXN0b3ItPnJlbmRlcmVyKCkgJiYgYW5jZXN0b3It
PnJlbmRlcmVyKCktPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAppbmRleCAxYmYxMzFiLi4xNjAzMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFNWR0dFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikKIHsKICAgICAvLyBVbmxpa2UgU1ZHU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgpLCB3ZSBzdGlsbCBjcmVhdGUgcmVuZGVyZXJz
LCBldmVuIGlmCiAgICAgLy8gZGlzcGxheSBpcyBzZXQgdG8gJ25vbmUnIC0gd2hpY2ggaXMgc3Bl
Y2lhbCB0byBTVkcgPGc+IGNvbnRhaW5lciBlbGVtZW50cy4KLSAgICByZXR1cm4gcGFyZW50T3JI
b3N0RWxlbWVudCgpICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCk7Cisg
ICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwCmluZGV4IDQxNWY3MGMuLmQ0ZjMxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBib29sIGlzVmlld3BvcnRFbGVtZW50
KE5vZGUqIG5vZGUpCiBTVkdFbGVtZW50KiBTVkdMb2NhdGFibGU6Om5lYXJlc3RWaWV3cG9ydEVs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7
Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVu
dCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7
CisgICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc1ZpZXdwb3J0RWxlbWVudChjdXJyZW50KSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY3VycmVudCk7CiAgICAg
fQpAQCAtNTUsNyArNTUsNyBAQCBTVkdFbGVtZW50KiBTVkdMb2NhdGFibGU6OmZhcnRoZXN0Vmll
d3BvcnRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQpOwogICAgIFNWR0VsZW1lbnQqIGZhcnRoZXN0ID0gMDsKLSAgICBmb3IgKEVsZW1lbnQq
IGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IGN1cnJlbnQ7IGN1cnJl
bnQgPSBjdXJyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVsZW1lbnQq
IGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAg
ICAgaWYgKGlzVmlld3BvcnRFbGVtZW50KGN1cnJlbnQpKQogICAgICAgICAgICAgZmFydGhlc3Qg
PSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY3VycmVudCk7CiAgICAgfQpAQCAtODQsNyArODQs
NyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKFNWR0VsZW1lbnQq
IGVsZW1lbnQsIENUTVNjb3BlIG1vZGUsIFN0eQogICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAK
ICAgICBTVkdFbGVtZW50KiBzdG9wQXRFbGVtZW50ID0gbW9kZSA9PSBOZWFyZXN0Vmlld3BvcnRT
Y29wZSA/IG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoZWxlbWVudCkgOiAwOwotICAgIGZvciAoRWxl
bWVudCogY3VycmVudEVsZW1lbnQgPSBlbGVtZW50OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVs
ZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9y
IChFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJy
ZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkp
IHsKICAgICAgICAgaWYgKCFjdXJyZW50RWxlbWVudC0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4
IDUzNGY4NjQuLmJlZTRlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgLy8gU3BlYzog
U1ZHIGFsbG93cyBpbmNsdXNpb24gb2YgZWxlbWVudHMgZnJvbSBmb3JlaWduIG5hbWVzcGFjZXMg
YW55d2hlcmUKICAgICAvLyB3aXRoIHRoZSBTVkcgY29udGVudC4gSW4gZ2VuZXJhbCwgdGhlIFNW
RyB1c2VyIGFnZW50IHdpbGwgaW5jbHVkZSB0aGUgdW5rbm93bgogICAgIC8vIGVsZW1lbnRzIGlu
IHRoZSBET00gYnV0IHdpbGwgb3RoZXJ3aXNlIGlnbm9yZSB1bmtub3duIGVsZW1lbnRzLiAKLSAg
ICBpZiAoIXBhcmVudE9ySG9zdEVsZW1lbnQoKSB8fCBwYXJlbnRPckhvc3RFbGVtZW50KCktPmlz
U1ZHRWxlbWVudCgpKQorICAgIGlmICghcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIHx8IHBh
cmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVy
biBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGEzMjMyNzQuLmJmZDA5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMS0zMCAgQ2hhbmdodW4gS2FuZyAgPHRlbW9vY2hpbkBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9y
U2hhZG93SG9zdCogaW4gTm9kZS5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4MzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorCiAyMDEz
LTAxLTMwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAg
ICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9y
ZXMgaW4gTGF5ZXJUcmVlUmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzA0M2JiNy4uN2QwMWY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc3Miw3ICsxNzcyLDcg
QEAgdm9pZCBXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBv
aW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYKICNlbmRpZgogICAgICAgICAvLyBGaW5kIHRoZSBu
b2RlIHRvIGhpZ2hsaWdodC4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG5vZGUgcmVzcG9u
ZGluZyB0aGUgdGFwIGdlc3R1cmUsIGJlY2F1c2UgbWFueQogICAgICAgICAvLyBwYWdlcyBoYXMg
YSBnbG9iYWwgY2xpY2sgaGFuZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdG8gaGlnaGxpZ2h0IHRo
ZSBib2R5LgotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBhZGp1c3RlZE5vZGU7IG5vZGU7IG5v
ZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gYWRqdXN0ZWROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBub2RlLT5p
c0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLS0gCjEuNy45
LjUKCg==
</data>
<flag name="review"
          id="204490"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="204491"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185603</attachid>
            <date>2013-01-30 15:52:55 -0800</date>
            <delta_ts>2013-01-30 16:08:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>51851</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSA1Zjc5MDg5ZGE2NDA0MmFkNTc2OWEyNzI3N2NmMTliNmFiZTBiMTNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTAgKysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKystLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwICAgIHwgICAgMiArLQog
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgfCAgIDE0
ICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyICsrKysrKysrKyst
LS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjMgKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaCAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwICAgICAgICAgICAgfCAgIDEyICsrKy0tLQogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwICAgICAgfCAgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oICAgICAgICB8ICAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgICAgICAgICAg
IHwgICAgNiArLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgICAgICAg
ICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcCAgICAgICAgICAgIHwgICAgOCArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwICAgICAgfCAgICAyICstCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCB8ICAgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAxOCAr
KysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCAgICAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUu
Y3BwICAgICAgICAgICAgICAgIHwgICAgNiArLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsrKysKIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwgICAgMiArLQogNDIgZmlsZXMg
Y2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggN2M2NGRkMy4uYmQ0NjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAx
LTMwICBDaGFuZ2h1biBLYW5nICA8dGVtb29jaGluQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFJlbmFtZSBmcm9tIHBhcmVudE9ySG9zdCogdG8gcGFyZW50T3JTaGFkb3dIb3N0KiBpbiBOb2Rl
LmguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgz
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworCiAyMDEzLTAxLTMwICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVk
IEdyYXBoaWNzOiBSZW1vdmUgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMgaW4gTGF5ZXJUcmVl
UmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4
IDZlYjk2ZDcuLmYzYjhlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCkBAIC0yMTgsOCArMjE4LDggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsK
ICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBub2Rl
LT5kb2N1bWVudCgpOwogCi0gICAgICAgIHdoaWxlIChub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkp
Ci0gICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICB3
aGlsZSAobm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAK
aW5kZXggNjJjZDJkMy4uMmVjOTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIE5vZGUqIFY4R0NDb250cm9s
bGVyOjpvcGFxdWVSb290Rm9yR0MoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZSA9IG93bmVyRWxl
bWVudDsKICAgICB9CiAKLSAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpKQorICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAKICAgICByZXR1cm4gbm9kZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCmluZGV4IDYxZjlkZmUuLmVhZjg4Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtNTMsOCArNTMsOCBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQsIFZlY3Rvcgogdm9pZCBTZWxlY3RvckZpbHRlcjo6cHVzaFBhcmVudFN0
YWNrRnJhbWUoRWxlbWVudCogcGFyZW50KQogewogICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRp
ZmllckZpbHRlcik7Ci0gICAgQVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFy
ZW50U3RhY2subGFzdCgpLmVsZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkp
OwotICAgIEFTU0VSVCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50
T3JIb3N0RWxlbWVudCgpKTsKKyAgICBBU1NFUlQobV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwg
bV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCA9PSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSk7CisgICAgQVNTRVJUKCFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCAhcGFy
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpOwogICAgIG1fcGFyZW50U3RhY2suYXBw
ZW5kKFBhcmVudFN0YWNrRnJhbWUocGFyZW50KSk7CiAgICAgUGFyZW50U3RhY2tGcmFtZSYgcGFy
ZW50RnJhbWUgPSBtX3BhcmVudFN0YWNrLmxhc3QoKTsKICAgICAvLyBNaXggdGFncywgY2xhc3Mg
bmFtZXMgYW5kIGlkcyBpbnRvIHNvbWUgc29ydCBvZiB3ZWlyZCBib3VpbGxhYmFpc3NlLgpAQCAt
ODcsMTMgKzg3LDEzIEBAIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnNldHVwUGFyZW50U3RhY2soRWxl
bWVudCogcGFyZW50KQogICAgIG1fcGFyZW50U3RhY2suc2hyaW5rKDApOwogICAgIG1fYW5jZXN0
b3JJZGVudGlmaWVyRmlsdGVyID0gYWRvcHRQdHIobmV3IEJsb29tRmlsdGVyPGJsb29tRmlsdGVy
S2V5Qml0cz4pOwogICAgIC8vIEZhc3QgdmVyc2lvbiBpZiBwYXJlbnQgaXMgYSByb290IGVsZW1l
bnQ6Ci0gICAgaWYgKCFwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGlmICghcGFy
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgcHVzaFBhcmVudFN0YWNr
RnJhbWUocGFyZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBPdGhlcndpc2Ug
Y2xpbWIgdXAgdGhlIHRyZWUuCiAgICAgVmVjdG9yPEVsZW1lbnQqLCAzMD4gYW5jZXN0b3JzOwot
ICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnQ7IGFuY2VzdG9yOyBhbmNlc3RvciA9
IGFuY2VzdG9yLT5wYXJlbnRPckhvc3RFbGVtZW50KCkpCisgICAgZm9yIChFbGVtZW50KiBhbmNl
c3RvciA9IHBhcmVudDsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9yU2hh
ZG93SG9zdEVsZW1lbnQoKSkKICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChhbmNlc3Rvcik7CiAg
ICAgZm9yIChzaXplX3QgbiA9IGFuY2VzdG9ycy5zaXplKCk7IG47IC0tbikKICAgICAgICAgcHVz
aFBhcmVudFN0YWNrRnJhbWUoYW5jZXN0b3JzW24gLSAxXSk7CkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBTZWxlY3RvckZpbHRlcjo6cHVzaFBhcmVudChFbGVtZW50KiBwYXJlbnQpCiAgICAgQVNT
RVJUKG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyKTsKICAgICAvLyBXZSBtYXkgZ2V0IGludm9r
ZWQgZm9yIHNvbWUgcmFuZG9tIGVsZW1lbnRzIGluIHNvbWUgd2Fja3kgY2FzZXMgZHVyaW5nIHN0
eWxlIHJlc29sdmUuCiAgICAgLy8gUGF1c2UgbWFpbnRhaW5pbmcgdGhlIHN0YWNrIGluIHRoaXMg
Y2FzZS4KLSAgICBpZiAobV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQtPnBh
cmVudE9ySG9zdEVsZW1lbnQoKSkKKyAgICBpZiAobV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVu
dCAhPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggOTU2Yjk4NC4uMTllYmNjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxS
ZWZQCiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFy
ZW50KQogewotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudHNQYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9ySG9zdEVsZW1lbnQoKTsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnRz
UGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7CiAKICAgICAvLyBX
ZSBhcmUgbm90IGFsd2F5cyBpbnZva2VkIGNvbnNpc3RlbnRseS4gRm9yIGV4YW1wbGUsIHNjcmlw
dCBleGVjdXRpb24gY2FuIGNhdXNlIHVzIHRvIGVudGVyCiAgICAgLy8gc3R5bGUgcmVjYWxjIGlu
IHRoZSBtaWRkbGUgb2YgdHJlZSBidWlsZGluZy4gV2UgbWF5IGFsc28gYmUgaW52b2tlZCBmcm9t
IHNvbWV3aGVyZSB3aXRoaW4gdGhlIHRyZWUuCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpwdXNoUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiAKICAgICAvLyBO
b3RlOiBXZSBtdXN0bid0IHNraXAgU2hhZG93Um9vdCBub2RlcyBmb3IgdGhlIHNjb3BlIHN0YWNr
LgogICAgIGlmIChtX3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVz
aChwYXJlbnQsIHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgbV9zY29wZVJl
c29sdmVyLT5wdXNoKHBhcmVudCwgcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwog
fQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNhYmU1
Li44NDU4ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpzZXR1cFN0YWNrKGNv
bnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkKIAogICAgIG1fc3RhY2suc2hyaW5rKDApOwogICAg
IGludCBhdXRob3JTdHlsZUJvdW5kc0luZGV4ID0gMDsKLSAgICBmb3IgKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlID0gcGFyZW50OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsg
c2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAg
ICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvcihzY29wZSk7CiAgICAgICAgIGlmIChydWxl
U2V0KQogICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoU3RhY2tGcmFtZShzY29wZSwgYXV0aG9y
U3R5bGVCb3VuZHNJbmRleCwgcnVsZVNldCkpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU3R5
bGVTY29wZVJlc29sdmVyOjpwb3AoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiAgICAgICAg
ICAgICBtX3N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jv
b3QoKSAmJiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKICAgICAg
ICAgICAgIC0tbV9zdGFja1BhcmVudEJvdW5kc0luZGV4OwotICAgICAgICBtX3N0YWNrUGFyZW50
ID0gc2NvcGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbV9zdGFja1BhcmVudCA9IHNj
b3BlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
aW5kZXggNGY0NjVhMS4uNWQ5ZWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtODEsNyArODEsNyBA
QCB2b2lkIEF0dHI6OmNyZWF0ZVRleHRDaGlsZCgpCiAKICAgICAgICAgLy8gVGhpcyBkb2VzIGV2
ZXJ5dGhpbmcgYXBwZW5kQ2hpbGQoKSB3b3VsZCBkbyBpbiB0aGlzIHNpdHVhdGlvbiAoYXNzdW1p
bmcgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQgd2FzIHNldCksCiAgICAgICAgIC8vIGJ1dCBtdWNo
IG1vcmUgZWZmaWNpZW50bHkuCi0gICAgICAgIHRleHROb2RlLT5zZXRQYXJlbnRPckhvc3ROb2Rl
KHRoaXMpOworICAgICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSh0aGlz
KTsKICAgICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNldExh
c3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBhYjU4ZDYxLi4xNDc2MmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAt
MjI2LDcgKzIyNiw3IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQoKQog
Tm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2Rl
KiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIGlm
IChub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9y
SG9zdE5vZGUoKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsKIAogICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkgJiYgbm9kZS0+aXNTaGFkb3dS
b290KCkpIHsKICAgICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBkNGY3MWI4Li5iOWMwYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBp
cyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMg
YSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVm
Q291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8
IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0
aGlzKTsKIApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlQ29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9kZSogbmV3Q2hpbGQpCiAgICAgICAgIEFTU0VS
VChtX2ZpcnN0Q2hpbGQgPT0gbmV4dENoaWxkKTsKICAgICAgICAgbV9maXJzdENoaWxkID0gbmV3
Q2hpbGQ7CiAgICAgfQotICAgIG5ld0NoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOwor
ICAgIG5ld0NoaWxkLT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKHRoaXMpOwogICAgIG5ld0No
aWxkLT5zZXRQcmV2aW91c1NpYmxpbmcocHJldik7CiAgICAgbmV3Q2hpbGQtPnNldE5leHRTaWJs
aW5nKG5leHRDaGlsZCk7CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBDb250YWluZXJOb2Rl
OjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQs
IEV4Y2UKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4K
ICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBz
ZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRP
ckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5v
dCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNp
ZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgotICAgIEFTU0VSVChyZWZDb3Vu
dCgpIHx8IHBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KHRoaXMp
OwogCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVu
KE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2wKIAogICAgIG9s
ZENoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgb2xkQ2hpbGQtPnNldE5leHRTaWJs
aW5nKDApOwotICAgIG9sZENoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgIG9sZENo
aWxkLT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKDApOwogCiAgICAgZG9jdW1lbnQoKS0+YWRv
cHRJZk5lZWRlZChvbGRDaGlsZCk7CiB9CkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNjcmVw
YW5jeSBiZXR3ZWVuIHJlbW92ZUNoaWxkKCkgYW5kIGl0cyBvcHRpbWl6ZWQgdmVyc2lvbiByZW1v
dmVDaGlsZHJlbigpLgogICAgICAgICAgICAgICAgIG4tPnNldFByZXZpb3VzU2libGluZygwKTsK
ICAgICAgICAgICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsKLSAgICAgICAgICAgICAgICBu
LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICAgICAgICAgIG4tPnNldFBhcmVudE9y
U2hhZG93SG9zdE5vZGUoMCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5l
ZWRlZChuLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7CkBA
IC02NDEsNyArNjQxLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVm
UHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KIAogICAgIC8vIENoZWNr
IHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBj
YW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRz
LgotICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgQVNT
RVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAogICAgIGVjID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggMTMyMWRmZC4uOWI3OTgxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNjYsNyArMjY2LDcgQEAgaW5saW5l
IGJvb2wgTm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgY29uc3QKIHsKICAgICBpZiAoZ2V0
RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRh
aW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICByZXR1cm4g
cGFyZW50ICYmIHBhcmVudC0+Z2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCA2
OGU3MjhmLi5hMjVjYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGlubGluZSB2b2lkIHJlbW92ZURldGFjaGVk
Q2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQogdGVt
cGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogaW5s
aW5lIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVy
aWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiB7Ci0gICAgY2hpbGQtPnNldFBhcmVudE9ySG9z
dE5vZGUoY29udGFpbmVyKTsKKyAgICBjaGlsZC0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShj
b250YWluZXIpOwogCiAgICAgR2VuZXJpY05vZGUqIGxhc3RDaGlsZCA9IGNvbnRhaW5lci0+bGFz
dENoaWxkKCk7CiAgICAgaWYgKGxhc3RDaGlsZCkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIG5hbWVz
cGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgIG5leHQgPSBuLT5uZXh0U2libGluZygpOwogICAg
ICAgICAgICAgbi0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwogICAgICAgICAgICAgbi0+c2V0TmV4
dFNpYmxpbmcoMCk7Ci0gICAgICAgICAgICBuLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAg
ICAgICAgICAgbi0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgwKTsKIAogICAgICAgICAgICAg
aWYgKCFuLT5yZWZDb3VudCgpKSB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggYWM4ZTk4Ni4uOTNiNmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01
ODQ3LDcgKzU4NDcsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIC8vIElmIGl0IGhh
c24ndCwgd2UgZG8gbm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCiAgICAgTm9kZSogbmV3SG92ZXJO
b2RlID0gaW5uZXJFbGVtZW50SW5Eb2N1bWVudDsKICAgICB3aGlsZSAobmV3SG92ZXJOb2RlICYm
ICFuZXdIb3Zlck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIG5ld0hvdmVyTm9kZSA9IG5ld0hv
dmVyTm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdI
b3Zlck5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIg
Y3VycmVudCBob3ZlciBub2RlLgogICAgIHNldEhvdmVyTm9kZShuZXdIb3Zlck5vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4NThlNDU5Li5hNjQ4YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtMTU5MCw3ICsxNTkwLDcgQEAgaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUo
KSBjb25zdAogCiBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVj
dGlvblR5cGUgdHlwZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX3BhcmVudE9y
SG9zdE5vZGUoMCkKKyAgICAsIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgwKQogICAgICwgbV90
cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxYWZlMjZkLi4xNWI3YWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUg
RWxlbWVudDo6c3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlKCkgY29uc3QKIAogYm9vbCBFbGVtZW50
Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50T3JI
b3N0RWxlbWVudCgpKSB7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsg
ZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkg
ewogICAgICAgICBzd2l0Y2ggKGVsZW1lbnQtPnNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpKSB7
CiAgICAgICAgIGNhc2UgU3BlbGxjaGVja0F0dHJpYnV0ZVRydWU6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGUxYmQ0NmMuLjg2NjQyNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtODU4LDcgKzg1OCw3IEBAIGlubGluZSBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IE5vZGU6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlCiAg
ICAgQVNTRVJUKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2Rl
KCkpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICBzZXRG
bGFnKEluRG9jdW1lbnRGbGFnKTsKLSAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSgpLT5pc0luU2hh
ZG93VHJlZSgpKQorICAgIGlmIChwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmlzSW5TaGFkb3dU
cmVlKCkpCiAgICAgICAgIHNldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsKICAgICByZXR1cm4g
SW5zZXJ0aW9uRG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBk
Y2Y2YjNhLi4xMGI5YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0y
NTYsNyArMjU2LDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZWxlYXNlUHNldWRv
RWxlbWVudChQc2V1ZG9FbGVtZW50KiBlbGVtZW50KQogICAgIEFTU0VSVCghZWxlbWVudC0+bmV4
dFNpYmxpbmcoKSk7CiAgICAgQVNTRVJUKCFlbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSk7CiAK
LSAgICBlbGVtZW50LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgIGVsZW1lbnQtPnNldFBh
cmVudE9yU2hhZG93SG9zdE5vZGUoMCk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0
YTo6cmVzZXRDb21wdXRlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0MTE2OTAxLi4xOGU1
ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgaW5saW5lIHZvaWQgTm9k
ZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAKIGlubGluZSB2
b2lkIE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKIHsKLSAg
ICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBwYXJlbnRPckhvc3ROb2RlKCk7IHAgJiYgIXAtPmNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZv
ciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgcCAmJiAhcC0+
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkp
CiAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKGRvY3Vt
ZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgYm9v
bCBOb2RlOjpjb250YWlucyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogCiBib29sIE5vZGU6OmNv
bnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAg
Zm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICBmb3Ig
KDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAg
ICBpZiAobm9kZSA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTA1MSw3ICsxMDUxLDcgQEAgYm9vbCBOb2RlOjpjb250YWluc0luY2x1ZGluZ0hvc3RFbGVtZW50
cyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudEZy
YWdtZW50KCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnRGcmFnbWVudCo+KG5vZGUpLT5p
c1RlbXBsYXRlQ29udGVudCgpKQogICAgICAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PGNvbnN0
IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQqPihub2RlKS0+aG9zdCgpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAg
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKQEAgLTExOTYsNyArMTE5Niw3IEBAIENvbnRhaW5lck5v
ZGUqIE5vZGU6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpCiAKIFJlbmRlclN0eWxl
KiBOb2RlOjp2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyKQogewotICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2Rl
KCktPmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikgOiAwOworICAgIHJldHVy
biBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgPyBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmNv
bXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikgOiAwOwogfQogCiBpbnQgTm9kZTo6
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKQEAgLTEyMTksNyArMTIxOSw3IEBAIGJvb2wgTm9k
ZTo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogICAgICAgICBpZiAoc3R5bGUtPnVzZXJEcmFn
KCkgPT0gRFJBR19FTEVNRU5UICYmIHN0eWxlLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBwYXJlbnRPckhv
c3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0cnVl
OworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgPyBwYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0cnVlOwogfQogCiBFbGVtZW50KiBOb2Rl
OjpzaGFkb3dIb3N0KCkgY29uc3QKQEAgLTEyNjQsOSArMTI2NCw5IEBAIENvbnRhaW5lck5vZGUq
IE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBh
cmVudCAmJiAhcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IDA7CiB9CiAKLUVsZW1l
bnQqIE5vZGU6OnBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdAorRWxlbWVudCogTm9kZTo6cGFy
ZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJu
IDA7CiAKQEAgLTE5MDEsOSArMTkwMSw5IEBAIHZvaWQgTm9kZTo6c2hvd05vZGVQYXRoRm9yVGhp
cygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPGNvbnN0IE5vZGUqLCAxNj4gY2hhaW47CiAgICAgY29u
c3QgTm9kZSogbm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUgKG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSkgeworICAgIHdoaWxlIChub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAg
ICAgY2hhaW4uYXBwZW5kKG5vZGUpOwotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwog
ICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gY2hhaW4uc2l6ZSgpOyBpbmRleCA+IDA7
IC0taW5kZXgpIHsKICAgICAgICAgY29uc3QgTm9kZSogbm9kZSA9IGNoYWluW2luZGV4IC0gMV07
CkBAIC0xOTU4LDcgKzE5NTgsNyBAQCBzdGF0aWMgdm9pZCB0cmF2ZXJzZVRyZWVBbmRNYXJrKGNv
bnN0IFN0cmluZyYgYmFzZUluZGVudCwgY29uc3QgTm9kZSogcm9vdE5vZGUsCiAKICAgICAgICAg
U3RyaW5nQnVpbGRlciBpbmRlbnQ7CiAgICAgICAgIGluZGVudC5hcHBlbmQoYmFzZUluZGVudCk7
Ci0gICAgICAgIGZvciAoY29uc3QgTm9kZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1w
Tm9kZSAhPSByb290Tm9kZTsgdG1wTm9kZSA9IHRtcE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkK
KyAgICAgICAgZm9yIChjb25zdCBOb2RlKiB0bXBOb2RlID0gbm9kZTsgdG1wTm9kZSAmJiB0bXBO
b2RlICE9IHJvb3ROb2RlOyB0bXBOb2RlID0gdG1wTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKQogICAgICAgICAgICAgaW5kZW50LmFwcGVuZCgnXHQnKTsKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcyIsIGluZGVudC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBu
b2RlLT5zaG93Tm9kZSgpOwpAQCAtMTk3NSw4ICsxOTc1LDggQEAgdm9pZCBOb2RlOjpzaG93VHJl
ZUFuZE1hcmsoY29uc3QgTm9kZSogbWFya2VkTm9kZTEsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVs
MSwgY28KIHsKICAgICBjb25zdCBOb2RlKiByb290Tm9kZTsKICAgICBjb25zdCBOb2RlKiBub2Rl
ID0gdGhpczsKLSAgICB3aGlsZSAobm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpICYmICFub2RlLT5o
YXNUYWdOYW1lKGJvZHlUYWcpKQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOworICAgIHdoaWxlIChub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgJiYgIW5vZGUt
Pmhhc1RhZ05hbWUoYm9keVRhZykpCisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgcm9vdE5vZGUgPSBub2RlOwogCiAgICAgU3RyaW5nIHN0YXJ0aW5n
SW5kZW50OwpAQCAtMTk5Nyw5ICsxOTk3LDkgQEAgdm9pZCBOb2RlOjpmb3JtYXRGb3JEZWJ1Z2dl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICBzdHJuY3B5KGJ1ZmZl
ciwgcmVzdWx0LnV0ZjgoKS5kYXRhKCksIGxlbmd0aCAtIDEpOwogfQogCi1zdGF0aWMgQ29udGFp
bmVyTm9kZSogcGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKGNvbnN0IE5vZGUqIG5vZGUpCitzdGF0
aWMgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFkb3dIb3N0T3JGcmFtZU93bmVyKGNvbnN0IE5v
ZGUqIG5vZGUpCiB7Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCAmJiBub2RlLT5kb2N1bWVudCgpICYmIG5v
ZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgIHBhcmVudCA9IG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAgIHJldHVybiBwYXJlbnQ7CkBAIC0yMDI3
LDggKzIwMjcsOCBAQCBzdGF0aWMgdm9pZCBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKGNvbnN0IE5v
ZGUqIG5vZGUsIGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUsIGNvbgogdm9pZCBOb2RlOjpzaG93VHJl
ZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogcm9vdE5vZGUgPSBjb25z
dF9jYXN0PE5vZGUqPih0aGlzKTsKLSAgICB3aGlsZSAocGFyZW50T3JIb3N0T3JGcmFtZU93bmVy
KHJvb3ROb2RlKSkKLSAgICAgICAgcm9vdE5vZGUgPSBwYXJlbnRPckhvc3RPckZyYW1lT3duZXIo
cm9vdE5vZGUpOworICAgIHdoaWxlIChwYXJlbnRPclNoYWRvd0hvc3RPckZyYW1lT3duZXIocm9v
dE5vZGUpKQorICAgICAgICByb290Tm9kZSA9IHBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVPd25l
cihyb290Tm9kZSk7CiAgICAgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShyb290Tm9kZSwgdGhpcywg
IiIpOwogfQogCkBAIC0yMDYxLDcgKzIwNjEsNyBAQCB2b2lkIE5vZGU6OmdldFN1YnJlc291cmNl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKIAogTm9kZSogTm9kZTo6ZW5jbG9z
aW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlz
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KSkgewogICAgICAgICAvLyBGb3IgaW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBp
cyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAg
ICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBl
dmVuIHRob3VnaCBpc0xpbmsgc29tZXRpbWVzIHJldHVybnMgdHJ1ZQogICAgICAgICAvLyBmb3Ig
dGhlbS4KQEAgLTI0OTAsNyArMjQ5MCw3IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciA8b3B0aW9uPiBh
bmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxlY3Q+cyBnZXQgYSB3aGVlbCBzY3Jv
bGwuCiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChzdGFy
dE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHN0YXJ0Tm9kZSA9
IHN0YXJ0Tm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgc3RhcnROb2RlID0g
c3RhcnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAg
dm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKICAgICBTY3JpcHRXcmFwcGFibGU6
OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVy
KG1fcGFyZW50T3JIb3N0Tm9kZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3RyZWVTY29wZSk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9uZXh0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXZpb3VzKTsKQEAgLTI2
MjcsNyArMjYyNyw3IEBAIHZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFt
ZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSkKICAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChj
b3VudCk7CiB9CiAKQEAgLTI2MzgsNyArMjYzOCw3IEBAIHZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0
b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCkgY29uc3QKICAgICBpZiAoIWNv
dW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhv
c3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9y
IChOb2RlKiBub2RlID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBub2RlLT5pbmNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggOTJmYjJiOS4u
MDA5NjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNzUsMTAgKzI3NSw5IEBAIHB1YmxpYzoKICAgICBO
b2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpOwogCiAgICAgLy8gTm9kZSdzIHBh
cmVudCwgc2hhZG93IHRyZWUgaG9zdC4KLSAgICAvLyBGSVhNRTogVGhlc2UgbWV0aG9kcyBzaG91
bGQgYmUgcmVuYW1lZCBwYXJlbnRPclNoYWRvd0hvc3QqCi0gICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwotICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdEVsZW1lbnQo
KSBjb25zdDsKLSAgICB2b2lkIHNldFBhcmVudE9ySG9zdE5vZGUoQ29udGFpbmVyTm9kZSopOwor
ICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSBjb25zdDsKKyAgICBF
bGVtZW50KiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
YXJlbnRPclNoYWRvd0hvc3ROb2RlKENvbnRhaW5lck5vZGUqKTsKICAgICBOb2RlKiBoaWdoZXN0
QW5jZXN0b3IoKSBjb25zdDsKIAogICAgIC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0
aGF0IHNoYWRvd0hvc3QgaXMgMC4KQEAgLTc3OCw3ICs3NzcsNyBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigp
OwotICAgIGJvb2wgaGFzVHJlZVNoYXJlZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhcGFyZW50
T3JIb3N0Tm9kZSgpOyB9CisgICAgYm9vbCBoYXNUcmVlU2hhcmVkUGFyZW50KCkgY29uc3QgeyBy
ZXR1cm4gISFwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IH0KIAogICAgIGVudW0gRWRpdGFibGVM
ZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0Vk
aXRhYmxlKEVkaXRhYmxlTGV2ZWwsIFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0
QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgY29uc3Q7CkBAIC04MTIsNyArODExLDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiogdHJhbnNpZW50
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9k
ZUZsYWdzOwotICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50T3JIb3N0Tm9kZTsKKyAgICBDb250
YWluZXJOb2RlKiBtX3BhcmVudE9yU2hhZG93SG9zdE5vZGU7CiAgICAgVHJlZVNjb3BlKiBtX3Ry
ZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKQEAgLTg0
OCwyNyArODQ3LDI3IEBAIGlubGluZSB2b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNoU2V0
PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHVybHMuYWRkKHVybCk7CiB9
CiAKLWlubGluZSB2b2lkIE5vZGU6OnNldFBhcmVudE9ySG9zdE5vZGUoQ29udGFpbmVyTm9kZSog
cGFyZW50KQoraW5saW5lIHZvaWQgTm9kZTo6c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShDb250
YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBt
X3BhcmVudE9ySG9zdE5vZGUgPSBwYXJlbnQ7CisgICAgbV9wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
ID0gcGFyZW50OwogfQogCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0
Tm9kZSgpIGNvbnN0CitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSk7
Ci0gICAgcmV0dXJuIG1fcGFyZW50T3JIb3N0Tm9kZTsKKyAgICByZXR1cm4gbV9wYXJlbnRPclNo
YWRvd0hvc3ROb2RlOwogfQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9k
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzU2hhZG93Um9vdCgpID8gMCA6IHBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICByZXR1cm4gaXNTaGFkb3dSb290KCkgPyAwIDogcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOwogfQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1
YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc1NoYWRvd1Jvb3QoKSk7
Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogfQogCiBpbmxpbmUgdm9pZCBOb2RlOjpyZWF0dGFjaCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggNzYxZWM2Zi4uZmMwMzIyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNTgsMTMgKzU4LDEzIEBAIFBzZXVkb0VsZW1l
bnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKICAg
ICAsIG1fcHNldWRvSWQocHNldWRvSWQpCiB7CiAgICAgQVNTRVJUKHBzZXVkb0lkICE9IE5PUFNF
VURPKTsKLSAgICBzZXRQYXJlbnRPckhvc3ROb2RlKHBhcmVudCk7CisgICAgc2V0UGFyZW50T3JT
aGFkb3dIb3N0Tm9kZShwYXJlbnQpOwogICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQog
CiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJl
bmRlcmVyKCkKIHsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigp
LT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkKTsKKyAgICByZXR1cm4gcGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3Bz
ZXVkb0lkKTsKIH0KIAogdm9pZCBQc2V1ZG9FbGVtZW50OjphdHRhY2goKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKaW5kZXggMGY4NTkyMi4uNjM4YmM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CkBAIC0xMTksMTIgKzExOSwxMiBAQCBwcml2YXRlOgogCiBpbmxpbmUgRWxlbWVudCogU2hhZG93
Um9vdDo6aG9zdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnRPckhvc3RO
b2RlKCkpOworICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsK
IH0KIAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6c2V0SG9zdChFbGVtZW50KiBob3N0KQogewot
ICAgIHNldFBhcmVudE9ySG9zdE5vZGUoaG9zdCk7CisgICAgc2V0UGFyZW50T3JTaGFkb3dIb3N0
Tm9kZShob3N0KTsKICAgICBpZiAoaG9zdCkKICAgICAgICAgc2V0UGFyZW50VHJlZVNjb3BlKGhv
c3QtPnRyZWVTY29wZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBiNWJkYWJiLi43MWYxZGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNTMsOCArMjUzLDggQEAgc3RhdGljIGJvb2wgaXNTVkdT
aGFkb3dUZXh0KFRleHQqIHRleHQpCiAKIHN0YXRpYyBib29sIGlzU1ZHVGV4dChUZXh0KiB0ZXh0
KQogewotICAgIE5vZGUqIHBhcmVudE9ySG9zdE5vZGUgPSB0ZXh0LT5wYXJlbnRPckhvc3ROb2Rl
KCk7Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUtPmlzU1ZHRWxlbWVudCgpICYmICFwYXJl
bnRPckhvc3ROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKTsKKyAg
ICBOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlID0gdGV4dC0+cGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlLT5pc1NWR0VsZW1lbnQo
KSAmJiAhcGFyZW50T3JTaGFkb3dIb3N0Tm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWln
bk9iamVjdFRhZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAppbmRleCA5NWEzNDY1Li5hODkzZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpCiAgICAgICAgICAgICAgICAgbV9mcmFt
ZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZE5vZGUodGFyZ2V0LCBtX2Zy
YW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0YXJnZXQgPSB0YXJnZXQtPnBhcmVudE9ySG9zdE5vZGUoKTsgCisgICAgICAgICAgICB0YXJn
ZXQgPSB0YXJnZXQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgfQogICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjYyMTE3MS4uNzcwYWNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBA
IHVuc2lnbmVkIEJpdFN0YWNrOjpzaXplKCkgY29uc3QKIHN0YXRpYyB1bnNpZ25lZCBkZXB0aENy
b3NzaW5nU2hhZG93Qm91bmRhcmllcyhOb2RlKiBub2RlKQogewogICAgIHVuc2lnbmVkIGRlcHRo
ID0gMDsKLSAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsg
cGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICBmb3IgKE5v
ZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgcGFyZW50OyBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgKytkZXB0aDsK
ICAgICByZXR1cm4gZGVwdGg7CiB9CkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIE5vZGUqIG5l
eHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUqIHJhbmdlRW5kQ29udGFp
bmVyLCBpbnQKICAgICAgICAgaWYgKE5vZGUqIG5leHQgPSByYW5nZUVuZENvbnRhaW5lci0+Y2hp
bGROb2RlKHJhbmdlRW5kT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBuZXh0OwogICAgIH0K
LSAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZUVuZENvbnRhaW5lcjsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHJhbmdlRW5k
Q29udGFpbmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7
CiAgICAgICAgIGlmIChOb2RlKiBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAg
ICAgIHJldHVybiBuZXh0OwogICAgIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRVcEZ1bGx5Q2xpcHBlZFN0YWNrKEJpdFN0YWNrJiBzdGFjaywgTm9kZSogbm9kZSkKIHsKICAg
ICAvLyBQdXQgdGhlIG5vZGVzIGluIGEgdmVjdG9yIHNvIHdlIGNhbiBpdGVyYXRlIGluIHJldmVy
c2Ugb3JkZXIuCiAgICAgVmVjdG9yPE5vZGUqLCAxMDA+IGFuY2VzdHJ5OwotICAgIGZvciAoTm9k
ZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyBwYXJlbnQ7IHBhcmVudCA9IHBh
cmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoTm9kZSogcGFyZW50ID0gbm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBhbmNlc3RyeS5hcHBlbmQocGFyZW50KTsKIAog
ICAgIC8vIENhbGwgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlIG9uIGVhY2ggbm9kZSBzdGFydGluZyB3
aXRoIHRoZSBlYXJsaWVzdCBhbmNlc3Rvci4KQEAgLTQyNywxNCArNDI3LDE0IEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgICAgIG5leHQgPSBtX25vZGUtPm5leHRTaWJs
aW5nKCk7CiAgICAgICAgICAgICBpZiAoIW5leHQpIHsKICAgICAgICAgICAgICAgICBib29sIHBh
c3RFbmQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG1fbm9kZSkgPT0gbV9wYXN0RW5kTm9kZTsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gbV9ub2RlLT5wYXJlbnRPckhvc3ROb2Rl
KCk7CisgICAgICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAgICAgICAgIHdoaWxlICghbmV4dCAmJiBwYXJlbnRO
b2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgocGFzdEVuZCAmJiBwYXJlbnROb2RlID09
IG1fZW5kQ29udGFpbmVyKSB8fCBtX2VuZENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2YocGFyZW50
Tm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaGF2ZVJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAgICAgICAg
ICAgICAgICBtX25vZGUgPSBwYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICBtX2Z1bGx5
Q2xpcHBlZFN0YWNrLnBvcCgpOwotICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gbV9u
b2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUg
PSBtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGhhdmVSZW5kZXJlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXROb2RlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkgewpAQCAtMTIzNSw3ICsxMjM1
LDcgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKIAog
ICAgICAgICAgICAgLy8gRXhpdCBhbGwgb3RoZXIgY29udGFpbmVycy4KICAgICAgICAgICAgIHdo
aWxlICghbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmICgh
YWR2YW5jZVJlc3BlY3RpbmdSYW5nZShtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkpCisgICAg
ICAgICAgICAgICAgaWYgKCFhZHZhbmNlUmVzcGVjdGluZ1JhbmdlKG1fbm9kZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICBleGl0Tm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmlu
ZGV4IDIxMThmYjYuLjA2YTBhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKGluRG9jdW1l
bnQoKSk7CiAgICAgbV9jb250ZW50RnJhbWUgPSBmcmFtZTsKIAotICAgIGZvciAoQ29udGFpbmVy
Tm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkp
CisgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUt
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVj
dGVkU3ViZnJhbWVDb3VudCgpOwogfQogCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSgpCiAKICAgICBtX2NvbnRlbnRGcmFtZSA9
IDA7CiAKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9kZSA9
IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAg
ICAgIG5vZGUtPmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggZDA3ZWNlMC4uZDM0
N2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBA
IC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhbkxvYWRGcmFtZShI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyKQogICAgIHsKLSAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gb3duZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAg
ICAgICAgZm9yIChOb2RlKiBub2RlID0gb3duZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChkaXNhYmxlZFN1YnRyZWVSb290
cygpLmNvbnRhaW5zKG5vZGUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggYTgxZjNi
ZC4uMTEzMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBA
IC0yMzgsMTEgKzIzOCwxMSBAQCBFbGVtZW50KiBIVE1MU3R5bGVFbGVtZW50OjpzY29waW5nRWxl
bWVudCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgbmVlZHMgdG8gYmUgcmVm
aW5lZCBmb3Igc2NvcGVkIHN0eWxlc2hlZXRzIHdpdGhpbiBzaGFkb3cgRE9NLgogICAgIC8vIEFz
IHdyaXR0ZW4sIHN1Y2ggYSBzdHlsZXNoZWV0IGNvdWxkIHN0eWxlIHRoZSBob3N0IGVsZW1lbnQs
IGFzIHdlbGwgYXMgY2hpbGRyZW4gb2YgdGhlIGhvc3QuCiAgICAgLy8gT1RPSCwgdGhpcyBwYXZl
cyB0aGUgd2F5IGZvciBhIDpib3VuZC1lbGVtZW50IGltcGxlbWVudGF0aW9uLgotICAgIENvbnRh
aW5lck5vZGUqIHBhcmVudE9ySG9zdCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXBh
cmVudE9ySG9zdCB8fCAhcGFyZW50T3JIb3N0LT5pc0VsZW1lbnROb2RlKCkpCisgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50T3JTaGFkb3dIb3N0ID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwor
ICAgIGlmICghcGFyZW50T3JTaGFkb3dIb3N0IHx8ICFwYXJlbnRPclNoYWRvd0hvc3QtPmlzRWxl
bWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9FbGVtZW50KHBh
cmVudE9ySG9zdCk7CisgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnRPclNoYWRvd0hvc3QpOwog
fQogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggNTdiMWI3OS4uMjI1MTUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50KiBkZXNjZW5kZW50VmlkZW9FbGVtZW50KE5v
ZGUqIG5vZGUpCiBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGFuY2VzdG9yVmlkZW9F
bGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmhhc1RhZ05h
bWUodmlkZW9UYWcpKQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihub2RlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDYzYjQ3ZDUuLjFm
YTVjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50
TGlzdGVuZXJzKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mCiAgICAgLy8g
UHVzaCB0aGlzIG5vZGUgYXMgdGhlIGZpcnMgZWxlbWVudC4KICAgICBhbmNlc3RvcnMuYXBwZW5k
KG5vZGUpOwogICAgIGlmIChpbmNsdWRlQW5jZXN0b3JzKSB7Ci0gICAgICAgIGZvciAoQ29udGFp
bmVyTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IGFuY2VzdG9yOyBh
bmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIGZvciAoQ29u
dGFpbmVyTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IGFu
Y2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAg
ICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9yKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxZTEyMTRhLi5kY2UwMWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMjY4LDcgKzIyNjgsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBOb2RlKiB0YXJnZQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gT25seSBjaGFuZ2UgdGhlIGZvY3VzIHdoZW4gY2xp
Y2tpbmcgc2Nyb2xsYmFycyBpZiBpdCBjYW4gdHJhbnNmZXJlZCB0byBhIG1vdXNlIGZvY3VzYWJs
ZSBub2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IDFkZTAy
MjAuLmYyODE4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3Rt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKQEAg
LTIzOCw3ICsyMzgsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0
JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICBOb2RlKiBj
b25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkpOwogICAgICAgICBWZWN0b3I8Tm9k
ZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVzcG9uZGluZ05vZGUgPSAwOwotICAg
ICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWRO
b2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBmb3IgKE5v
ZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRl
ZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgd2UgYWxyZWFkeSBoYXZlIGEgcmVzdWx0IGZvciBhIGNvbW1vbiBhbmNlc3RvciBmcm9tIGFu
b3RoZXIgY2FuZGlkYXRlLgogICAgICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSByZXNwb25kZXJN
YXAuZ2V0KHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgIGlmIChyZXNwb25kaW5nTm9kZSkKQEAg
LTI0OCw3ICsyNDgsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0
JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgaWYg
KG5vZGVGaWx0ZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uZGluZ05v
ZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgaXRlcmF0
aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGljaCB3ZSB3
aWxsIG5lZWQgbGF0ZXIuCi0gICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0
ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZp
c2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZp
c2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgdmlzaXRl
ZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KSkgewogICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBjb21waWxlU3VidGFyZ2V0
TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlM
aXMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0NvbnRl
bnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICBOb2RlKiByZXBsYWNlbWVudCA9IGNhbmRpZGF0
ZTsKLSAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGNhbmRpZGF0ZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOworICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gY2FuZGlkYXRlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC0+aXNDb250
ZW50RWRpdGFibGUoKSkgewogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50ID0gcGFyZW50Owog
ICAgICAgICAgICAgICAgIGlmIChlZGl0YWJsZUFuY2VzdG9ycy5jb250YWlucyhyZXBsYWNlbWVu
dCkpIHsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0
IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ZWRpdGFibGVBbmNlc3RvcnMuYWRkKHJlcGxhY2VtZW50KTsKLSAgICAgICAgICAgICAgICBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQg
PSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhbmRpZGF0ZSA9IHJlcGxhY2VtZW50OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYjViZmQ4My4uZWFjYmM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjY4LDE0ICsy
NjgsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRUb05vblNoYWRvd0FuY2VzdG9yKCkKIHZv
aWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKE5vZGUqIG4pCiB7CiAgICAgaWYgKG4gJiYg
bi0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3ROb2RlKCk7
CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgbV9pbm5lck5v
ZGUgPSBuOwogfQogICAgIAogdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vblNoYXJlZE5v
ZGUoTm9kZSogbikKIHsKICAgICBpZiAobiAmJiBuLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAg
ICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG47CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBhZGMwNzA4Li5hYjcyNTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02MTEsNyArNjExLDcg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2RlIHRoYXQgY2F1c2VkIHRo
ZSBnZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBh
cyBub2RlKCkgZXhjZXB0IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBhbmQgOmFmdGVyCiAgICAg
Ly8gcHNldWRvIGVsZW1lbnRzIGZvciB3aGljaCB0aGVpciBwYXJlbnQgbm9kZSBpcyByZXR1cm5l
ZC4KLSAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHNldWRvRWxl
bWVudCgpID8gbm9kZSgpLT5wYXJlbnRPckhvc3ROb2RlKCkgOiBub2RlKCk7IH0KKyAgICBOb2Rl
KiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHNldWRvRWxlbWVudCgpID8gbm9k
ZSgpLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgOiBub2RlKCk7IH0KIAogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKTsgfQogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCktPmZyYW1lKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA3MjM2MmI5
Li5hM2I0YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9k
ZSogbm9kZSkKICAgICBFbGVtZW50KiBib2R5ID0gbm9kZS0+ZG9jdW1lbnQoKS0+Ym9keSgpOwog
ICAgIE5vZGUqIHBhcmVudDsKICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuOyBuID0gcGFyZW50
KSB7Ci0gICAgICAgIHBhcmVudCA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgcGFy
ZW50ID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICBpZiAobiAhPSBub2Rl
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKICAgICAgICAgaWYg
KHBhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcAppbmRleCA4MjM1NjJiLi45YWM1Y2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIGdldEVsZW1lbnRDVE0oU1ZHRWxlbWVudCog
ZWxlbWVudCwgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgICAgIGlmIChjdXJyZW50
RWxlbWVudCA9PSBzdG9wQXRFbGVtZW50KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgY3VycmVudCA9
IGN1cnJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAppbmRleCBiMDU0MzZhLi5hN2UzZjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBTVkdFbGVtZW50Ojppc091dGVy
bW9zdFNWR1NWR0VsZW1lbnQoKSBjb25zdAogICAgIC8vIElmIHdlJ3JlIGxpdmluZyBpbiBhIHNo
YWRvdyB0cmVlLCB3ZSdyZSBhIDxzdmc+IGVsZW1lbnQgdGhhdCBnb3QgY3JlYXRlZCBhcyByZXBs
YWNlbWVudAogICAgIC8vIGZvciBhIDxzeW1ib2w+IGVsZW1lbnQgb3IgYSBjbG9uZWQgPHN2Zz4g
ZWxlbWVudCBpbiB0aGUgcmVmZXJlbmNlZCB0cmVlLiBJbiB0aGF0IGNhc2UKICAgICAvLyB3ZSdy
ZSBhbHdheXMgYW4gaW5uZXIgPHN2Zz4gZWxlbWVudC4KLSAgICBpZiAoaXNJblNoYWRvd1RyZWUo
KSAmJiBwYXJlbnRPckhvc3RFbGVtZW50KCkgJiYgcGFyZW50T3JIb3N0RWxlbWVudCgpLT5pc1NW
R0VsZW1lbnQoKSkKKyAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSAmJiBwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50KCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRWxlbWVudCBtYXkgbm90IGJlIGlu
IHRoZSBkb2N1bWVudCwgcHJldGVuZCB3ZSdyZSBvdXRlcm1vc3QgZm9yIHZpZXdwb3J0KCksIGdl
dENUTSgpLCBldGMuCkBAIC0xODcsMTIgKzE4NywxMiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiAKIFNWR1NWR0VsZW1lbnQqIFNWR0Vs
ZW1lbnQ6Om93bmVyU1ZHRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9kZSogbiA9
IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1NW
R0VsZW1lbnQqPihuKTsKIAotICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAg
ICAgICBuID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KIAogICAgIHJldHVy
biAwOwpAQCAtMjAyLDEyICsyMDIsMTIgQEAgU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6dmlld3Bv
cnRFbGVtZW50KCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG5lZWRzIHNoYWRvdyB0
cmVlIHN1cHBvcnQgLSBhcyBSZW5kZXJTVkdDb250YWluZXIgdXNlcyB0aGlzIGZ1bmN0aW9uCiAg
ICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSAib3ZlcmZsb3ciIHByb3BlcnR5LiA8dXNlPiBvbiA8c3lt
Ym9sPiB3b3VsZG4ndCB3b3JrIG90aGVyd2hpc2UuCi0gICAgQ29udGFpbmVyTm9kZSogbiA9IHBh
cmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpzdmdUYWcpIHx8IG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmltYWdlVGFnKSB8fCBu
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKTsKIAotICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0
Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0K
IAogICAgIHJldHVybiAwOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBib29sIGhhc0xvYWRM
aXN0ZW5lcihFbGVtZW50KiBlbGVtZW50KQogICAgIGlmIChlbGVtZW50LT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBmb3IgKGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IGVsZW1lbnQ7
IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKGVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGVsZW1lbnQ7IGVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAg
Y29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZW50cnkgPSBlbGVtZW50LT5nZXRFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlbnRyeS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGVudHJ5W2ldLnVzZUNh
cHR1cmUpCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2
ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzKQogICAgIHdoaWxlIChjdXJy
ZW50VGFyZ2V0ICYmIGN1cnJlbnRUYXJnZXQtPmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygp
KSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQ7CiAgICAgICAgIGlmIChzZW5kUGFy
ZW50TG9hZEV2ZW50cykKLSAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRUYXJnZXQtPnBhcmVu
dE9ySG9zdEVsZW1lbnQoKTsgLy8gc2F2ZSB0aGUgbmV4dCBwYXJlbnQgdG8gZGlzcGF0Y2ggdG9v
IGluY2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdlcyB0aGUgdHJlZQorICAgICAgICAg
ICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOyAv
LyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBkaXNwYXRjaCB0b28gaW5jYXNlIGRpc3BhdGNoaW5n
IHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVlCiAgICAgICAgIGlmIChoYXNMb2FkTGlzdGVuZXIo
Y3VycmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CiAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSAocGFyZW50ICYmIHBhcmVudC0+aXNTVkdFbGVt
ZW50KCkpID8gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50PihwYXJlbnQpIDogUmVmUHRy
PFNWR0VsZW1lbnQ+KCk7CkBAIC01ODUsNyArNTg1LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCiAgICAgICAgIHJldHVybiBk
b2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlRm9yRWxlbWVudCh0aGlzKTsKIAogICAg
IFJlbmRlclN0eWxlKiBzdHlsZSA9IDA7Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVu
dE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPclNo
YWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBzdHlsZSA9IHJlbmRlcmVyLT5zdHls
ZSgpOwogICAgIH0KQEAgLTYxNyw3ICs2MTcsNyBAQCBSZW5kZXJTdHlsZSogU1ZHRWxlbWVudDo6
Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgICAgICBy
ZXR1cm4gRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIAog
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDA7Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVu
dCA9IHBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBw
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBwYXJlbnRTdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuaAppbmRleCBjZTE2MjVhLi44OTNmNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flNWR0VsZW1lbnRJbnN0YW5jZSgpOwogCi0gICAgdm9pZCBzZXRQYXJlbnRPckhvc3ROb2RlKFNW
R0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIHsgbV9wYXJlbnRJbnN0YW5jZSA9IGluc3RhbmNl
OyB9CisgICAgdm9pZCBzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKFNWR0VsZW1lbnRJbnN0YW5j
ZSogaW5zdGFuY2UpIHsgbV9wYXJlbnRJbnN0YW5jZSA9IGluc3RhbmNlOyB9CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKaW5k
ZXggNDFhMjJhYS4uZmFkMDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGUKICAgICAvLyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
Mjk3KQogICAgIC8vIE5vdGUgdGhhdCB3ZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgZm9yZWln
bk9iamVjdCBpbnN0YW50aWF0aW9uIHZpYSA8dXNlPiwgaGVuY2UgaXQgaXMgc2FmZQogICAgIC8v
IHRvIHVzZSBwYXJlbnRFbGVtZW50KCkgaGVyZS4gSWYgdGhhdCBjaGFuZ2VzLCB0aGlzIG1ldGhv
ZCBzaG91bGQgYmUgdXBkYXRlZCB0byB1c2UKLSAgICAvLyBwYXJlbnRPckhvc3RFbGVtZW50KCkg
aW5zdGVhZC4KKyAgICAvLyBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgaW5zdGVhZC4KICAg
ICBFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudEVsZW1lbnQoKTsKICAgICB3aGlsZSAoYW5jZXN0
b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChhbmNlc3Rvci0+
cmVuZGVyZXIoKSAmJiBhbmNlc3Rvci0+cmVuZGVyZXIoKS0+aXNTVkdIaWRkZW5Db250YWluZXIo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCmluZGV4IDFiZjEzMWIuLjE2MDMwOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgU1ZH
R0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKQog
ewogICAgIC8vIFVubGlrZSBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKCksIHdl
IHN0aWxsIGNyZWF0ZSByZW5kZXJlcnMsIGV2ZW4gaWYKICAgICAvLyBkaXNwbGF5IGlzIHNldCB0
byAnbm9uZScgLSB3aGljaCBpcyBzcGVjaWFsIHRvIFNWRyA8Zz4gY29udGFpbmVyIGVsZW1lbnRz
LgotICAgIHJldHVybiBwYXJlbnRPckhvc3RFbGVtZW50KCkgJiYgcGFyZW50T3JIb3N0RWxlbWVu
dCgpLT5pc1NWR0VsZW1lbnQoKTsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVu
dCgpICYmIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKaW5kZXggNDE1ZjcwYy4uZDRmMzEzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGlj
IGJvb2wgaXNWaWV3cG9ydEVsZW1lbnQoTm9kZSogbm9kZSkKIFNWR0VsZW1lbnQqIFNWR0xvY2F0
YWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQog
ewogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQgPSBlbGVt
ZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5w
YXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnQgPSBlbGVt
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGlzVmlld3Bv
cnRFbGVtZW50KGN1cnJlbnQpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0Vs
ZW1lbnQqPihjdXJyZW50KTsKICAgICB9CkBAIC01NSw3ICs1NSw3IEBAIFNWR0VsZW1lbnQqIFNW
R0xvY2F0YWJsZTo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogZWxl
bWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgU1ZHRWxlbWVudCogZmFydGhlc3Qg
PSAwOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVs
ZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQo
KSkgeworICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93
SG9zdEVsZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9yU2hhZG93
SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoaXNWaWV3cG9ydEVsZW1lbnQoY3VycmVudCkp
CiAgICAgICAgICAgICBmYXJ0aGVzdCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjdXJyZW50
KTsKICAgICB9CkBAIC04NCw3ICs4NCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6
OmNvbXB1dGVDVE0oU1ZHRWxlbWVudCogZWxlbWVudCwgQ1RNU2NvcGUgbW9kZSwgU3R5CiAgICAg
QWZmaW5lVHJhbnNmb3JtIGN0bTsKIAogICAgIFNWR0VsZW1lbnQqIHN0b3BBdEVsZW1lbnQgPSBt
b2RlID09IE5lYXJlc3RWaWV3cG9ydFNjb3BlID8gbmVhcmVzdFZpZXdwb3J0RWxlbWVudChlbGVt
ZW50KSA6IDA7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7IGN1
cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5wYXJlbnRPckhv
c3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50ID0gZWxlbWVu
dDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPnBhcmVu
dE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnRFbGVtZW50LT5p
c1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTM0Zjg2NC4uYmVlNGVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgU1ZHU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkKICAgICAvLyBTcGVjOiBTVkcgYWxsb3dzIGluY2x1c2lvbiBvZiBlbGVtZW50cyBm
cm9tIGZvcmVpZ24gbmFtZXNwYWNlcyBhbnl3aGVyZQogICAgIC8vIHdpdGggdGhlIFNWRyBjb250
ZW50LiBJbiBnZW5lcmFsLCB0aGUgU1ZHIHVzZXIgYWdlbnQgd2lsbCBpbmNsdWRlIHRoZSB1bmtu
b3duCiAgICAgLy8gZWxlbWVudHMgaW4gdGhlIERPTSBidXQgd2lsbCBvdGhlcndpc2UgaWdub3Jl
IHVua25vd24gZWxlbWVudHMuIAotICAgIGlmICghcGFyZW50T3JIb3N0RWxlbWVudCgpIHx8IHBh
cmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgaWYgKCFwYXJlbnRPclNo
YWRvd0hvc3RFbGVtZW50KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpLT5pc1NWR0Vs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29udGV4dCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTMyMzI3NC4uN2U1
MjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisyMDEzLTAxLTMwICBDaGFuZ2h1biBL
YW5nICA8dGVtb29jaGluQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFJlbmFtZSBmcm9tIHBh
cmVudE9ySG9zdCogdG8gcGFyZW50T3JTaGFkb3dIb3N0KiBpbiBOb2RlLmguCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzMDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wMS0zMCAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzIGluIExheWVyVHJlZVJlbmRlcmVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGMwNDNiYjcuLjdkMDFmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQgV2ViUGFnZTo6aGlnaGxp
Z2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNp
emUmCiAjZW5kaWYKICAgICAgICAgLy8gRmluZCB0aGUgbm9kZSB0byBoaWdobGlnaHQuIFRoaXMg
aXMgbm90IHRoZSBzYW1lIGFzIHRoZSBub2RlIHJlc3BvbmRpbmcgdGhlIHRhcCBnZXN0dXJlLCBi
ZWNhdXNlIG1hbnkKICAgICAgICAgLy8gcGFnZXMgaGFzIGEgZ2xvYmFsIGNsaWNrIGhhbmRsZXIg
YW5kIHdlIGRvIG5vdCB3YW50IHRvIGhpZ2hsaWdodCB0aGUgYm9keS4KLSAgICAgICAgZm9yIChO
b2RlKiBub2RlID0gYWRqdXN0ZWROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IGFkanVzdGVkTm9kZTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAgICAgaWYg
KG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgfHwgbm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0tIAoxLjcuOS41Cgo=
</data>
<flag name="commit-queue"
          id="204726"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185613</attachid>
            <date>2013-01-30 16:24:40 -0800</date>
            <delta_ts>2013-01-30 16:31:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>51229</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSA1MjA5MTJlZGM5YjU2YjBiZmZmNWQ3NTFkZDExMzZkOTExNDJiYTg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKystLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwICAgIHwgICAgMiArLQog
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgfCAgIDE0
ICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyICsrKysrKysrKyst
LS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMjMgKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCAgICAgICAgICAgIHwgICAxMiArKystLS0KIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCAgICAgIHwgICAgNCArLQogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCAgICAgICAgfCAgICAyICst
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwICAgICAgICAgICB8ICAg
IDYgKy0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAg
ICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVu
dC5jcHAgICAgICAgICAgICB8ICAgIDggKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCAgICAgIHwgICAgMiArLQogLi4uL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICB8ICAgMTggKysrKy0t
LS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmggICAgICAgICAgICB8
ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAg
ICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCAgICAgICAg
ICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCAg
ICAgICAgICAgICAgICB8ICAgIDYgKy0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8ICAgIDIgKy0KIDQxIGZpbGVzIGNoYW5n
ZWQsIDEyMyBpbnNlcnRpb25zKCspLCAxMDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE1
MWNmOWQuLmZjMDI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0zMCAg
Q2hhbmdodW4gS2FuZyAgPHRlbW9vY2hpbkBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBSZW5h
bWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9kZS5oLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKIDIwMTMtMDEtMzAgIEpvZSBNYXNvbiAgPGpt
YXNvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBOZXZlciBzdG9yZSBlbXB0eSBj
cmVkZW50aWFscyBpbiBOZXR3b3JrSm9iOjpzdG9yZUNyZWRlbnRpYWxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDZlYjk2ZDcuLmYzYjhlNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yMTgsOCArMjE4LDgg
QEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYgKG5vZGUtPmluRG9j
dW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBub2RlLT5kb2N1bWVudCgpOwogCi0gICAgICAg
IHdoaWxlIChub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICB3aGlsZSAobm9kZS0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggNjJjZDJkMy4uMmVjOTdiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAt
MTcyLDcgKzE3Miw3IEBAIE5vZGUqIFY4R0NDb250cm9sbGVyOjpvcGFxdWVSb290Rm9yR0MoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9kZSA9IG93bmVyRWxlbWVudDsKICAgICB9CiAKLSAgICB3aGls
ZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIHdoaWxlIChO
b2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIG5v
ZGUgPSBwYXJlbnQ7CiAKICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwCmluZGV4IDYxZjlkZmUuLmVhZjg4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yRmlsdGVyLmNwcApAQCAtNTMsOCArNTMsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVj
dEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3Rvcgog
dm9pZCBTZWxlY3RvckZpbHRlcjo6cHVzaFBhcmVudFN0YWNrRnJhbWUoRWxlbWVudCogcGFyZW50
KQogewogICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlcik7Ci0gICAgQVNTRVJU
KG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQg
PT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpOwotICAgIEFTU0VSVCghbV9wYXJlbnRT
dGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKTsKKyAgICBB
U1NFUlQobV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgbV9wYXJlbnRTdGFjay5sYXN0KCkuZWxl
bWVudCA9PSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSk7CisgICAgQVNTRVJU
KCFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCAhcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCkpOwogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudFN0YWNrRnJhbWUocGFy
ZW50KSk7CiAgICAgUGFyZW50U3RhY2tGcmFtZSYgcGFyZW50RnJhbWUgPSBtX3BhcmVudFN0YWNr
Lmxhc3QoKTsKICAgICAvLyBNaXggdGFncywgY2xhc3MgbmFtZXMgYW5kIGlkcyBpbnRvIHNvbWUg
c29ydCBvZiB3ZWlyZCBib3VpbGxhYmFpc3NlLgpAQCAtODcsMTMgKzg3LDEzIEBAIHZvaWQgU2Vs
ZWN0b3JGaWx0ZXI6OnNldHVwUGFyZW50U3RhY2soRWxlbWVudCogcGFyZW50KQogICAgIG1fcGFy
ZW50U3RhY2suc2hyaW5rKDApOwogICAgIG1fYW5jZXN0b3JJZGVudGlmaWVyRmlsdGVyID0gYWRv
cHRQdHIobmV3IEJsb29tRmlsdGVyPGJsb29tRmlsdGVyS2V5Qml0cz4pOwogICAgIC8vIEZhc3Qg
dmVyc2lvbiBpZiBwYXJlbnQgaXMgYSByb290IGVsZW1lbnQ6Ci0gICAgaWYgKCFwYXJlbnQtPnBh
cmVudE9ySG9zdE5vZGUoKSkgeworICAgIGlmICghcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCkpIHsKICAgICAgICAgcHVzaFBhcmVudFN0YWNrRnJhbWUocGFyZW50KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAvLyBPdGhlcndpc2UgY2xpbWIgdXAgdGhlIHRyZWUuCiAgICAg
VmVjdG9yPEVsZW1lbnQqLCAzMD4gYW5jZXN0b3JzOwotICAgIGZvciAoRWxlbWVudCogYW5jZXN0
b3IgPSBwYXJlbnQ7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPckhvc3RF
bGVtZW50KCkpCisgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudDsgYW5jZXN0b3I7
IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkKICAgICAg
ICAgYW5jZXN0b3JzLmFwcGVuZChhbmNlc3Rvcik7CiAgICAgZm9yIChzaXplX3QgbiA9IGFuY2Vz
dG9ycy5zaXplKCk7IG47IC0tbikKICAgICAgICAgcHVzaFBhcmVudFN0YWNrRnJhbWUoYW5jZXN0
b3JzW24gLSAxXSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6cHVz
aFBhcmVudChFbGVtZW50KiBwYXJlbnQpCiAgICAgQVNTRVJUKG1fYW5jZXN0b3JJZGVudGlmaWVy
RmlsdGVyKTsKICAgICAvLyBXZSBtYXkgZ2V0IGludm9rZWQgZm9yIHNvbWUgcmFuZG9tIGVsZW1l
bnRzIGluIHNvbWUgd2Fja3kgY2FzZXMgZHVyaW5nIHN0eWxlIHJlc29sdmUuCiAgICAgLy8gUGF1
c2UgbWFpbnRhaW5pbmcgdGhlIHN0YWNrIGluIHRoaXMgY2FzZS4KLSAgICBpZiAobV9wYXJlbnRT
dGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkKKyAg
ICBpZiAobV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQtPnBhcmVudE9yU2hh
ZG93SG9zdEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHB1c2hQYXJlbnRTdGFja0Zy
YW1lKHBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggODg1
Mzg1Zi4uYzM1NjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDEw
LDcgKzQxMCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMo
dW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQCiAKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6cHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogewotICAgIGNvbnN0IENvbnRh
aW5lck5vZGUqIHBhcmVudHNQYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsK
KyAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KCk7CiAKICAgICAvLyBXZSBhcmUgbm90IGFsd2F5cyBpbnZva2Vk
IGNvbnNpc3RlbnRseS4gRm9yIGV4YW1wbGUsIHNjcmlwdCBleGVjdXRpb24gY2FuIGNhdXNlIHVz
IHRvIGVudGVyCiAgICAgLy8gc3R5bGUgcmVjYWxjIGluIHRoZSBtaWRkbGUgb2YgdHJlZSBidWls
ZGluZy4gV2UgbWF5IGFsc28gYmUgaW52b2tlZCBmcm9tIHNvbWV3aGVyZSB3aXRoaW4gdGhlIHRy
ZWUuCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoUGFyZW50RWxl
bWVudChFbGVtZW50KiBwYXJlbnQpCiAKICAgICAvLyBOb3RlOiBXZSBtdXN0bid0IHNraXAgU2hh
ZG93Um9vdCBub2RlcyBmb3IgdGhlIHNjb3BlIHN0YWNrLgogICAgIGlmIChtX3Njb3BlUmVzb2x2
ZXIpCi0gICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVzaChwYXJlbnQsIHBhcmVudC0+cGFyZW50
T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgbV9zY29wZVJlc29sdmVyLT5wdXNoKHBhcmVudCwgcGFy
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNhYmU1Li44NDU4ZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQg
U3R5bGVTY29wZVJlc29sdmVyOjpzZXR1cFN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVu
dCkKIAogICAgIG1fc3RhY2suc2hyaW5rKDApOwogICAgIGludCBhdXRob3JTdHlsZUJvdW5kc0lu
ZGV4ID0gMDsKLSAgICBmb3IgKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gcGFyZW50OyBz
Y29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yIChjb25z
dCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVs
ZVNldEZvcihzY29wZSk7CiAgICAgICAgIGlmIChydWxlU2V0KQogICAgICAgICAgICAgbV9zdGFj
ay5hcHBlbmQoU3RhY2tGcmFtZShzY29wZSwgYXV0aG9yU3R5bGVCb3VuZHNJbmRleCwgcnVsZVNl
dCkpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpwb3AoY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiAgICAgICAgICAgICBtX3N0YWNrLnJlbW92ZUxhc3Qo
KTsKICAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KHNj
b3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKICAgICAgICAgICAgIC0tbV9zdGFja1BhcmVudEJv
dW5kc0luZGV4OwotICAgICAgICBtX3N0YWNrUGFyZW50ID0gc2NvcGUtPnBhcmVudE9ySG9zdE5v
ZGUoKTsKKyAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggNGY0NjVhMS4uNWQ5ZWQ5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEF0dHI6OmNyZWF0ZVRleHRD
aGlsZCgpCiAKICAgICAgICAgLy8gVGhpcyBkb2VzIGV2ZXJ5dGhpbmcgYXBwZW5kQ2hpbGQoKSB3
b3VsZCBkbyBpbiB0aGlzIHNpdHVhdGlvbiAoYXNzdW1pbmcgbV9pZ25vcmVDaGlsZHJlbkNoYW5n
ZWQgd2FzIHNldCksCiAgICAgICAgIC8vIGJ1dCBtdWNoIG1vcmUgZWZmaWNpZW50bHkuCi0gICAg
ICAgIHRleHROb2RlLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOworICAgICAgICB0ZXh0Tm9k
ZS0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSh0aGlzKTsKICAgICAgICAgc2V0Rmlyc3RDaGls
ZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNldExhc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmNwcAppbmRleCBhYjU4ZDYxLi4xNDc2MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQoKQogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxE
ZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIGlmIChub2RlLT5pc1BzZXVkb0VsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgcmV0
dXJuIG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIGlmICghY2FuQ3Jvc3NV
cHBlckJvdW5kYXJ5KCkgJiYgbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgQVNTRVJU
KHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAppbmRleCA1NjRkOWQyLi4yY2JkYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNl
cnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UK
IHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAv
LyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5n
IG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3RO
b2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5leHRDaGls
ZCwgTm9kZSogbmV3Q2hpbGQpCiAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hpbGQgPT0gbmV4dENo
aWxkKTsKICAgICAgICAgbV9maXJzdENoaWxkID0gbmV3Q2hpbGQ7CiAgICAgfQotICAgIG5ld0No
aWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOworICAgIG5ld0NoaWxkLT5zZXRQYXJlbnRP
clNoYWRvd0hvc3ROb2RlKHRoaXMpOwogICAgIG5ld0NoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmco
cHJldik7CiAgICAgbmV3Q2hpbGQtPnNldE5leHRTaWJsaW5nKG5leHRDaGlsZCk7CiB9CkBAIC0z
NTIsNyArMzUyLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKIHsKICAgICAvLyBDaGVjayB0
aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2Fu
IGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4K
LSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VS
VChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKICAgICBSZWZQdHI8
Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNDc0LDcgKzQ3NCw3IEBAIGJvb2wgQ29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElm
IGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0
YXRpb24gZXZlbnRzLgotICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9ySG9zdE5vZGUo
KSk7CisgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsK
IAogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KHRoaXMpOwogCkBAIC01NTEsNyArNTUxLDcgQEAg
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5v
ZGUqIG5leHRDaGlsZCwgTm9kZSogb2wKIAogICAgIG9sZENoaWxkLT5zZXRQcmV2aW91c1NpYmxp
bmcoMCk7CiAgICAgb2xkQ2hpbGQtPnNldE5leHRTaWJsaW5nKDApOwotICAgIG9sZENoaWxkLT5z
ZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgIG9sZENoaWxkLT5zZXRQYXJlbnRPclNoYWRvd0hv
c3ROb2RlKDApOwogCiAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChvbGRDaGlsZCk7CiB9
CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigp
CiAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNjcmVwYW5jeSBiZXR3ZWVuIHJlbW92ZUNoaWxk
KCkgYW5kIGl0cyBvcHRpbWl6ZWQgdmVyc2lvbiByZW1vdmVDaGlsZHJlbigpLgogICAgICAgICAg
ICAgICAgIG4tPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICAgICAgICAgICAgICBuLT5zZXRO
ZXh0U2libGluZygwKTsKLSAgICAgICAgICAgICAgICBuLT5zZXRQYXJlbnRPckhvc3ROb2RlKDAp
OworICAgICAgICAgICAgICAgIG4tPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7CiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChuLmdldCgpKTsKIAogICAgICAg
ICAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7CkBAIC02NDUsNyArNjQ1LDcgQEAgYm9vbCBD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNl
cHRpb25Db2RlJiBlYywgYm8KIAogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAi
ZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUg
ZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgotICAgIEFTU0VSVChyZWZDb3VudCgp
IHx8IHBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAogICAgIGVjID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKaW5kZXggMTMyMWRmZC4uOWI3OTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCkBAIC0yNjYsNyArMjY2LDcgQEAgaW5saW5lIGJvb2wgTm9kZTo6bmVlZHNTaGFkb3dU
cmVlV2Fsa2VyKCkgY29uc3QKIHsKICAgICBpZiAoZ2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxr
ZXJGbGFnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC0+Z2V0Rmxh
ZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCA2OGU3MjhmLi5hMjVjYmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMTA4LDcgKzEw
OCw3IEBAIGlubGluZSB2b2lkIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5l
cmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQogdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUs
IGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogaW5saW5lIHZvaWQgYXBwZW5kQ2hpbGRUb0Nv
bnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWlu
ZXIpCiB7Ci0gICAgY2hpbGQtPnNldFBhcmVudE9ySG9zdE5vZGUoY29udGFpbmVyKTsKKyAgICBj
aGlsZC0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShjb250YWluZXIpOwogCiAgICAgR2VuZXJp
Y05vZGUqIGxhc3RDaGlsZCA9IGNvbnRhaW5lci0+bGFzdENoaWxkKCk7CiAgICAgaWYgKGxhc3RD
aGlsZCkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKICAgICAgICAg
ICAgIG5leHQgPSBuLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgbi0+c2V0UHJldmlvdXNT
aWJsaW5nKDApOwogICAgICAgICAgICAgbi0+c2V0TmV4dFNpYmxpbmcoMCk7Ci0gICAgICAgICAg
ICBuLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgwKTsKIAogICAgICAgICAgICAgaWYgKCFuLT5yZWZDb3VudCgpKSB7CiAj
aWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWM4ZTk4Ni4uOTNiNmE2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01ODQ3LDcgKzU4NDcsNyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdQogICAgIC8vIElmIGl0IGhhc24ndCwgd2UgZG8gbm90IG5lZWQgdG8g
ZG8gYW55dGhpbmcuCiAgICAgTm9kZSogbmV3SG92ZXJOb2RlID0gaW5uZXJFbGVtZW50SW5Eb2N1
bWVudDsKICAgICB3aGlsZSAobmV3SG92ZXJOb2RlICYmICFuZXdIb3Zlck5vZGUtPnJlbmRlcmVy
KCkpCi0gICAgICAgIG5ld0hvdmVyTm9kZSA9IG5ld0hvdmVyTm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOworICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdIb3Zlck5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgY3VycmVudCBob3ZlciBub2RlLgogICAg
IHNldEhvdmVyTm9kZShuZXdIb3Zlck5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4NThl
NDU5Li5hNjQ4YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU5MCw3ICsxNTkwLDcgQEAg
aW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogCiBpbmxpbmUgTm9kZTo6
Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1f
bm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX3BhcmVudE9ySG9zdE5vZGUoMCkKKyAgICAsIG1fcGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgwKQogICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpCiAgICAg
LCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCAzOTcxMzc3Li45ZGIyZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNDYwLDcgKzI0
NjAsNyBAQCBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgRWxlbWVudDo6c3BlbGxjaGVja0F0dHJp
YnV0ZVN0YXRlKCkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzOyBlbGVt
ZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9y
IChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBzd2l0Y2ggKGVsZW1l
bnQtPnNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlbGxjaGVj
a0F0dHJpYnV0ZVRydWU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDIzYzU2OWMuLmY2NGRkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtODU5LDcgKzg1
OSw3IEBAIGlubGluZSBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IE5vZGU6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlCiAgICAgQVNTRVJUKGluc2VydGlvblBvaW50
LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICBzZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKLSAg
ICBpZiAocGFyZW50T3JIb3N0Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQorICAgIGlmIChwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCktPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHNldEZsYWco
SXNJblNoYWRvd1RyZWVGbGFnKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBkY2Y2YjNhLi4xMGI5YzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNTYsNyArMjU2LDcgQEAgaW5saW5lIHZv
aWQgRWxlbWVudFJhcmVEYXRhOjpyZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBl
bGVtZW50KQogICAgIEFTU0VSVCghZWxlbWVudC0+bmV4dFNpYmxpbmcoKSk7CiAgICAgQVNTRVJU
KCFlbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSk7CiAKLSAgICBlbGVtZW50LT5zZXRQYXJlbnRP
ckhvc3ROb2RlKDApOworICAgIGVsZW1lbnQtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7
CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCA0MTE2OTAxLi4xOGU1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC04MTAsNyArODEwLDcgQEAgaW5saW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVD
aGFuZ2VUeXBlIGNoYW5nZVR5cGUpCiAKIGlubGluZSB2b2lkIE5vZGU6Om1hcmtBbmNlc3RvcnNX
aXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKIHsKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAg
PSBwYXJlbnRPckhvc3ROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBw
ID0gcC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7
IHAgPSBwLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIHAtPnNldENoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKGRvY3VtZW50KCktPmNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpKQpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgYm9vbCBOb2RlOjpjb250YWlucyhjb25zdCBO
b2RlKiBub2RlKSBjb25zdAogCiBib29sIE5vZGU6OmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9N
KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBpZiAobm9kZSA9PSB0aGlzKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgYm9vbCBO
b2RlOjpjb250YWluc0luY2x1ZGluZ0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKiBub2RlKSBjb25z
dAogICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudEZyYWdtZW50KCkgJiYgc3RhdGljX2Nhc3Q8
Y29uc3QgRG9jdW1lbnRGcmFnbWVudCo+KG5vZGUpLT5pc1RlbXBsYXRlQ29udGVudCgpKQogICAg
ICAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQqPihub2RlKS0+aG9zdCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UK
QEAgLTExOTYsNyArMTE5Niw3IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgpCiAKIFJlbmRlclN0eWxlKiBOb2RlOjp2aXJ0dWFsQ29tcHV0ZWRT
dHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewotICAgIHJldHVybiBwYXJl
bnRPckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCktPmNvbXB1dGVkU3R5bGUocHNldWRv
RWxlbWVudFNwZWNpZmllcikgOiAwOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCkgPyBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVu
dFNwZWNpZmllcikgOiAwOwogfQogCiBpbnQgTm9kZTo6bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29u
c3QKQEAgLTEyMTksNyArMTIxOSw3IEBAIGJvb2wgTm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBj
b25zdAogICAgICAgICBpZiAoc3R5bGUtPnVzZXJEcmFnKCkgPT0gRFJBR19FTEVNRU5UICYmIHN0
eWxlLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3RO
b2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0cnVlOworICAgIHJldHVybiBwYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkgPyBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0
aW9uKCkgOiB0cnVlOwogfQogCiBFbGVtZW50KiBOb2RlOjpzaGFkb3dIb3N0KCkgY29uc3QKQEAg
LTEyNjQsOSArMTI2NCw5IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5
UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5pc1NoYWRv
d1Jvb3QoKSA/IHBhcmVudCA6IDA7CiB9CiAKLUVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVs
ZW1lbnQoKSBjb25zdAorRWxlbWVudCogTm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgp
OworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsK
ICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5MDEsOSArMTkwMSw5
IEBAIHZvaWQgTm9kZTo6c2hvd05vZGVQYXRoRm9yVGhpcygpIGNvbnN0CiB7CiAgICAgVmVjdG9y
PGNvbnN0IE5vZGUqLCAxNj4gY2hhaW47CiAgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7Ci0g
ICAgd2hpbGUgKG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIHdoaWxlIChub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgY2hhaW4uYXBwZW5kKG5vZGUpOwot
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBub2RlID0g
bm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gY2hhaW4uc2l6ZSgpOyBpbmRleCA+IDA7IC0taW5kZXgpIHsKICAgICAgICAgY29u
c3QgTm9kZSogbm9kZSA9IGNoYWluW2luZGV4IC0gMV07CkBAIC0xOTU4LDcgKzE5NTgsNyBAQCBz
dGF0aWMgdm9pZCB0cmF2ZXJzZVRyZWVBbmRNYXJrKGNvbnN0IFN0cmluZyYgYmFzZUluZGVudCwg
Y29uc3QgTm9kZSogcm9vdE5vZGUsCiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBpbmRlbnQ7CiAg
ICAgICAgIGluZGVudC5hcHBlbmQoYmFzZUluZGVudCk7Ci0gICAgICAgIGZvciAoY29uc3QgTm9k
ZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1wTm9kZSAhPSByb290Tm9kZTsgdG1wTm9k
ZSA9IHRtcE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgZm9yIChjb25zdCBOb2Rl
KiB0bXBOb2RlID0gbm9kZTsgdG1wTm9kZSAmJiB0bXBOb2RlICE9IHJvb3ROb2RlOyB0bXBOb2Rl
ID0gdG1wTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICAgICAgaW5kZW50
LmFwcGVuZCgnXHQnKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGluZGVudC50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBub2RlLT5zaG93Tm9kZSgpOwpAQCAtMTk3
NSw4ICsxOTc1LDggQEAgdm9pZCBOb2RlOjpzaG93VHJlZUFuZE1hcmsoY29uc3QgTm9kZSogbWFy
a2VkTm9kZTEsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMSwgY28KIHsKICAgICBjb25zdCBOb2Rl
KiByb290Tm9kZTsKICAgICBjb25zdCBOb2RlKiBub2RlID0gdGhpczsKLSAgICB3aGlsZSAobm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQotICAg
ICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIHdoaWxlIChub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgJiYgIW5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCisg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgcm9vdE5v
ZGUgPSBub2RlOwogCiAgICAgU3RyaW5nIHN0YXJ0aW5nSW5kZW50OwpAQCAtMTk5Nyw5ICsxOTk3
LDkgQEAgdm9pZCBOb2RlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVk
IGxlbmd0aCkgY29uc3QKICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnV0ZjgoKS5kYXRhKCks
IGxlbmd0aCAtIDEpOwogfQogCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0T3JG
cmFtZU93bmVyKGNvbnN0IE5vZGUqIG5vZGUpCitzdGF0aWMgQ29udGFpbmVyTm9kZSogcGFyZW50
T3JTaGFkb3dIb3N0T3JGcmFtZU93bmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBpZiAo
IXBhcmVudCAmJiBub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkp
CiAgICAgICAgIHBhcmVudCA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVu
dCgpOwogICAgIHJldHVybiBwYXJlbnQ7CkBAIC0yMDI3LDggKzIwMjcsOCBAQCBzdGF0aWMgdm9p
ZCBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IE5vZGUqIG1h
cmtlZE5vZGUsIGNvbgogdm9pZCBOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNv
bnN0CiB7CiAgICAgTm9kZSogcm9vdE5vZGUgPSBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKLSAg
ICB3aGlsZSAocGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKLSAgICAgICAgcm9v
dE5vZGUgPSBwYXJlbnRPckhvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOworICAgIHdoaWxlIChw
YXJlbnRPclNoYWRvd0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpKQorICAgICAgICByb290Tm9k
ZSA9IHBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSk7CiAgICAgc2hvd1N1
YlRyZWVBY3Jvc3NGcmFtZShyb290Tm9kZSwgdGhpcywgIiIpOwogfQogCkBAIC0yMDYxLDcgKzIw
NjEsNyBAQCB2b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYg
dXJscykgY29uc3QKIAogTm9kZSogTm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxm
KCkKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9k
ZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAvLyBGb3IgaW1h
Z2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBpcyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVs
ZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAgICAgIC8vIFNvIHdlIGRvbid0IGxldCBp
bWFnZXMgYmUgdGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBldmVuIHRob3VnaCBpc0xpbmsgc29tZXRp
bWVzIHJldHVybnMgdHJ1ZQogICAgICAgICAvLyBmb3IgdGhlbS4KQEAgLTI0OTAsNyArMjQ5MCw3
IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAg
IC8vIFRoaXMgaXMgbmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBz
byB0aGF0IDxzZWxlY3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCiAgICAgICAgIE5vZGUqIHN0YXJ0
Tm9kZSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpOworICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9k
ZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6RE9NKTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9y
eU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyZW50T3JIb3N0Tm9kZSk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3RyZWVTY29wZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX3ByZXZpb3VzKTsKQEAgLTI2MjcsNyArMjYyNyw3IEBAIHZvaWQgTm9k
ZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChOb2RlKiBub2Rl
ID0gcGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpKQorICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+
ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3VudCk7CiB9CiAKQEAgLTI2MzgsNyAr
MjYzOCw3IEBAIHZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50
Rm9ySW5zZXJ0aW9uKCkgY29uc3QKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKQogICAgICAgICBub2RlLT5pbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggOTJmYjJiOS4uMDA5NjZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0yNzUsMTAgKzI3NSw5IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1Ry
ZWVSb290Tm9kZSgpOwogCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUgaG9zdC4K
LSAgICAvLyBGSVhNRTogVGhlc2UgbWV0aG9kcyBzaG91bGQgYmUgcmVuYW1lZCBwYXJlbnRPclNo
YWRvd0hvc3QqCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0Owot
ICAgIEVsZW1lbnQqIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBh
cmVudE9ySG9zdE5vZGUoQ29udGFpbmVyTm9kZSopOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSBjb25zdDsKKyAgICBFbGVtZW50KiBwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKENv
bnRhaW5lck5vZGUqKTsKICAgICBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoKSBjb25zdDsKIAogICAg
IC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd0hvc3QgaXMgMC4KQEAg
LTc3OCw3ICs3NzcsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5v
ZGU+OwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotICAgIGJvb2wgaGFzVHJlZVNoYXJl
ZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhcGFyZW50T3JIb3N0Tm9kZSgpOyB9CisgICAgYm9v
bCBoYXNUcmVlU2hhcmVkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gISFwYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCk7IH0KIAogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlF
ZGl0YWJsZSB9OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwsIFVz
ZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkg
Y29uc3Q7CkBAIC04MTIsNyArODExLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiogdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
KCk7CiAKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIENvbnRhaW5lck5v
ZGUqIG1fcGFyZW50T3JIb3N0Tm9kZTsKKyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE9yU2hh
ZG93SG9zdE5vZGU7CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3By
ZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKQEAgLTg0OCwyNyArODQ3LDI3IEBAIGlubGluZSB2
b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJM
JiB1cmwpCiAgICAgICAgIHVybHMuYWRkKHVybCk7CiB9CiAKLWlubGluZSB2b2lkIE5vZGU6OnNl
dFBhcmVudE9ySG9zdE5vZGUoQ29udGFpbmVyTm9kZSogcGFyZW50KQoraW5saW5lIHZvaWQgTm9k
ZTo6c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3BhcmVudE9ySG9zdE5vZGUgPSBwYXJl
bnQ7CisgICAgbV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlID0gcGFyZW50OwogfQogCi1pbmxpbmUg
Q29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0CitpbmxpbmUgQ29u
dGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fcGFyZW50T3JI
b3N0Tm9kZTsKKyAgICByZXR1cm4gbV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlOwogfQogCiBpbmxp
bmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGlzU2hhZG93Um9vdCgpID8gMCA6IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICByZXR1cm4gaXNT
aGFkb3dSb290KCkgPyAwIDogcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogfQogCiBpbmxpbmUg
Q29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFpc1NoYWRvd1Jvb3QoKSk7Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogfQogCiBpbmxp
bmUgdm9pZCBOb2RlOjpyZWF0dGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAK
aW5kZXggNzYxZWM2Zi4uZmMwMzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bz
ZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNw
cApAQCAtNTgsMTMgKzU4LDEzIEBAIFBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVu
dCogcGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICAsIG1fcHNldWRvSWQocHNldWRvSWQp
CiB7CiAgICAgQVNTRVJUKHBzZXVkb0lkICE9IE5PUFNFVURPKTsKLSAgICBzZXRQYXJlbnRPckhv
c3ROb2RlKHBhcmVudCk7CisgICAgc2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShwYXJlbnQpOwog
ICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKIHsKLSAgICByZXR1cm4g
cGFyZW50T3JIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZSht
X3BzZXVkb0lkKTsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpLT5yZW5k
ZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkKTsKIH0KIAogdm9pZCBQc2V1
ZG9FbGVtZW50OjphdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGI1YmRhYmIuLjcxZjFkZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKQEAgLTI1Myw4ICsyNTMsOCBAQCBzdGF0aWMgYm9vbCBpc1NWR1No
YWRvd1RleHQoVGV4dCogdGV4dCkKIAogc3RhdGljIGJvb2wgaXNTVkdUZXh0KFRleHQqIHRleHQp
CiB7Ci0gICAgTm9kZSogcGFyZW50T3JIb3N0Tm9kZSA9IHRleHQtPnBhcmVudE9ySG9zdE5vZGUo
KTsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZS0+aXNTVkdFbGVtZW50KCkgJiYgIXBhcmVu
dE9ySG9zdE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpOworICAg
IE5vZGUqIHBhcmVudE9yU2hhZG93SG9zdE5vZGUgPSB0ZXh0LT5wYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdE5vZGUtPmlzU1ZHRWxlbWVudCgp
ICYmICFwYXJlbnRPclNoYWRvd0hvc3ROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWdu
T2JqZWN0VGFnKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IDA0MTM3NGMuLjUyNzVkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xODg1LDcgKzE4ODUsNyBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpzZXRGb2N1c2VkTm9kZUlmTmVlZGVkKCkKICAgICAgICAgICAgICAgICBtX2ZyYW1l
LT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkTm9kZSh0YXJnZXQsIG1fZnJh
bWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRhcmdldCA9IHRhcmdldC0+cGFyZW50T3JIb3N0Tm9kZSgpOyAKKyAgICAgICAgICAgIHRhcmdl
dCA9IHRhcmdldC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICB9CiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWROb2RlKDApOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBiNjIxMTcxLi43NzBhY2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
dW5zaWduZWQgQml0U3RhY2s6OnNpemUoKSBjb25zdAogc3RhdGljIHVuc2lnbmVkIGRlcHRoQ3Jv
c3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQgZGVwdGgg
PSAwOwotICAgIGZvciAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyBw
YXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoTm9k
ZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICArK2RlcHRoOwog
ICAgIHJldHVybiBkZXB0aDsKIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgTm9kZSogbmV4
dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMoTm9kZSogcmFuZ2VFbmRDb250YWlu
ZXIsIGludAogICAgICAgICBpZiAoTm9kZSogbmV4dCA9IHJhbmdlRW5kQ29udGFpbmVyLT5jaGls
ZE5vZGUocmFuZ2VFbmRPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgfQot
ICAgIGZvciAoTm9kZSogbm9kZSA9IHJhbmdlRW5kQ29udGFpbmVyOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmFuZ2VFbmRD
b250YWluZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsK
ICAgICAgICAgaWYgKE5vZGUqIG5leHQgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICAg
ICAgcmV0dXJuIG5leHQ7CiAgICAgfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIHNl
dFVwRnVsbHlDbGlwcGVkU3RhY2soQml0U3RhY2smIHN0YWNrLCBOb2RlKiBub2RlKQogewogICAg
IC8vIFB1dCB0aGUgbm9kZXMgaW4gYSB2ZWN0b3Igc28gd2UgY2FuIGl0ZXJhdGUgaW4gcmV2ZXJz
ZSBvcmRlci4KICAgICBWZWN0b3I8Tm9kZSosIDEwMD4gYW5jZXN0cnk7Ci0gICAgZm9yIChOb2Rl
KiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFy
ZW50LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChOb2RlKiBwYXJlbnQgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIGFuY2VzdHJ5LmFwcGVuZChwYXJlbnQpOwogCiAg
ICAgLy8gQ2FsbCBwdXNoRnVsbHlDbGlwcGVkU3RhdGUgb24gZWFjaCBub2RlIHN0YXJ0aW5nIHdp
dGggdGhlIGVhcmxpZXN0IGFuY2VzdG9yLgpAQCAtNDI3LDE0ICs0MjcsMTQgQEAgdm9pZCBUZXh0
SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgbmV4dCA9IG1fbm9kZS0+bmV4dFNpYmxp
bmcoKTsKICAgICAgICAgICAgIGlmICghbmV4dCkgewogICAgICAgICAgICAgICAgIGJvb2wgcGFz
dEVuZCA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobV9ub2RlKSA9PSBtX3Bhc3RFbmROb2RlOwotICAg
ICAgICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KTsKKyAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gbV9ub2RlLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKCFuZXh0ICYmIHBhcmVudE5v
ZGUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChwYXN0RW5kICYmIHBhcmVudE5vZGUgPT0g
bV9lbmRDb250YWluZXIpIHx8IG1fZW5kQ29udGFpbmVyLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnRO
b2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBoYXZlUmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZSA9IHBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgIG1fZnVsbHlD
bGlwcGVkU3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBtX25v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9
IG1fbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaGF2ZVJlbmRlcmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhpdE5vZGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2RlKSB7CkBAIC0xMjM1LDcgKzEyMzUs
NyBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogCiAg
ICAgICAgICAgICAvLyBFeGl0IGFsbCBvdGhlciBjb250YWluZXJzLgogICAgICAgICAgICAgd2hp
bGUgKCFtX25vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFh
ZHZhbmNlUmVzcGVjdGluZ1JhbmdlKG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSkKKyAgICAg
ICAgICAgICAgICBpZiAoIWFkdmFuY2VSZXNwZWN0aW5nUmFuZ2UobV9ub2RlLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgIGV4aXROb2Rl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5k
ZXggMjExOGZiNi4uMDZhMGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2V0Q29udGVudEZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQoaW5Eb2N1bWVu
dCgpKTsKICAgICBtX2NvbnRlbnRGcmFtZSA9IGZyYW1lOwogCi0gICAgZm9yIChDb250YWluZXJO
b2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkK
KyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBub2RlLT5pbmNyZW1lbnRDb25uZWN0
ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBIVE1MRnJhbWVP
d25lckVsZW1lbnQ6OmNsZWFyQ29udGVudEZyYW1lKCkKIAogICAgIG1fY29udGVudEZyYW1lID0g
MDsKIAotICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBu
b2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0g
dGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAg
ICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCBkMDdlY2UwLi5kMzQ3
ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAg
LTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgY2FuTG9hZEZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIpCiAgICAgewotICAgICAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBvd25lcjsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBvd25lcjsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKGRpc2FibGVkU3VidHJlZVJvb3Rz
KCkuY29udGFpbnMobm9kZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBhODFmM2Jk
Li4xMTMwYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAg
LTIzOCwxMSArMjM4LDExIEBAIEVsZW1lbnQqIEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BpbmdFbGVt
ZW50KCkgY29uc3QKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBuZWVkcyB0byBiZSByZWZp
bmVkIGZvciBzY29wZWQgc3R5bGVzaGVldHMgd2l0aGluIHNoYWRvdyBET00uCiAgICAgLy8gQXMg
d3JpdHRlbiwgc3VjaCBhIHN0eWxlc2hlZXQgY291bGQgc3R5bGUgdGhlIGhvc3QgZWxlbWVudCwg
YXMgd2VsbCBhcyBjaGlsZHJlbiBvZiB0aGUgaG9zdC4KICAgICAvLyBPVE9ILCB0aGlzIHBhdmVz
IHRoZSB3YXkgZm9yIGEgOmJvdW5kLWVsZW1lbnQgaW1wbGVtZW50YXRpb24uCi0gICAgQ29udGFp
bmVyTm9kZSogcGFyZW50T3JIb3N0ID0gcGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghcGFy
ZW50T3JIb3N0IHx8ICFwYXJlbnRPckhvc3QtPmlzRWxlbWVudE5vZGUoKSkKKyAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3QgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7Cisg
ICAgaWYgKCFwYXJlbnRPclNoYWRvd0hvc3QgfHwgIXBhcmVudE9yU2hhZG93SG9zdC0+aXNFbGVt
ZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0VsZW1lbnQocGFy
ZW50T3JIb3N0KTsKKyAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudE9yU2hhZG93SG9zdCk7CiB9
CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCA1N2IxYjc5Li4yMjUxNTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBz
dGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoTm9k
ZSogbm9kZSkKIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudCogYW5jZXN0b3JWaWRlb0Vs
ZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+aGFzVGFnTmFt
ZSh2aWRlb1RhZykpCi0gICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7Cisg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNjNiNDdkNS4uMWZh
NWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRM
aXN0ZW5lcnMoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYKICAgICAvLyBQ
dXNoIHRoaXMgbm9kZSBhcyB0aGUgZmlycyBlbGVtZW50LgogICAgIGFuY2VzdG9ycy5hcHBlbmQo
bm9kZSk7CiAgICAgaWYgKGluY2x1ZGVBbmNlc3RvcnMpIHsKLSAgICAgICAgZm9yIChDb250YWlu
ZXJOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgYW5jZXN0b3I7IGFu
Y2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgZm9yIChDb250
YWluZXJOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgYW5j
ZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAg
ICAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0b3IpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDFlMTIxNGEuLmRjZTAxY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNjgsNyArMjI2OCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IE5vZGUqIHRhcmdlCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPbmx5IGNoYW5nZSB0aGUgZm9jdXMgd2hlbiBjbGlj
a2luZyBzY3JvbGxiYXJzIGlmIGl0IGNhbiB0cmFuc2ZlcmVkIHRvIGEgbW91c2UgZm9jdXNhYmxl
IG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggMWRlMDIy
MC4uZjI4MTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAt
MjM4LDcgKzIzOCw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3Qm
IGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgIE5vZGUqIGNv
bnN0IG5vZGUgPSBpbnRlcnNlY3RlZE5vZGVzLml0ZW0oaSk7CiAgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gdmlzaXRlZE5vZGVzOwogICAgICAgICBOb2RlKiByZXNwb25kaW5nTm9kZSA9IDA7Ci0gICAg
ICAgIGZvciAoTm9kZSogdmlzaXRlZE5vZGUgPSBub2RlOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5v
ZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9k
ZSogdmlzaXRlZE5vZGUgPSBub2RlOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVk
Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgICAgICAvLyBDaGVjayBp
ZiB3ZSBhbHJlYWR5IGhhdmUgYSByZXN1bHQgZm9yIGEgY29tbW9uIGFuY2VzdG9yIGZyb20gYW5v
dGhlciBjYW5kaWRhdGUuCiAgICAgICAgICAgICByZXNwb25kaW5nTm9kZSA9IHJlc3BvbmRlck1h
cC5nZXQodmlzaXRlZE5vZGUpOwogICAgICAgICAgICAgaWYgKHJlc3BvbmRpbmdOb2RlKQpAQCAt
MjQ4LDcgKzI0OCw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3Qm
IGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICBpZiAo
bm9kZUZpbHRlcih2aXNpdGVkTm9kZSkpIHsKICAgICAgICAgICAgICAgICByZXNwb25kaW5nTm9k
ZSA9IHZpc2l0ZWROb2RlOwogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHRoZSBpdGVyYXRp
b24gdG8gY29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSByZXNwb25kZXIsIHdoaWNoIHdlIHdp
bGwgbmVlZCBsYXRlci4KLSAgICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2RlID0gdmlzaXRl
ZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlz
aXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGZvciAodmlz
aXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyB2aXNpdGVk
Tm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVz
dWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRM
aXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxp
cwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmlzQ29udGVu
dEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIE5vZGUqIHJlcGxhY2VtZW50ID0gY2FuZGlkYXRl
OwotICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gY2FuZGlkYXRlLT5wYXJlbnRPckhvc3ROb2Rl
KCk7CisgICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBjYW5kaWRhdGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50LT5pc0NvbnRl
bnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBwYXJlbnQ7CiAg
ICAgICAgICAgICAgICAgaWYgKGVkaXRhYmxlQW5jZXN0b3JzLmNvbnRhaW5zKHJlcGxhY2VtZW50
KSkgewpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3Qg
Tm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBl
ZGl0YWJsZUFuY2VzdG9ycy5hZGQocmVwbGFjZW1lbnQpOwotICAgICAgICAgICAgICAgIHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgICAgIHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FuZGlkYXRlID0gcmVwbGFjZW1lbnQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBiNWJmZDgzLi5lYWNiYzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0yNjgsMTQgKzI2
OCwxNCBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKQogdm9p
ZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vZGUoTm9kZSogbikKIHsKICAgICBpZiAobiAmJiBu
LT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsK
KyAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBtX2lubmVyTm9k
ZSA9IG47CiB9CiAgICAgCiB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldElubmVyTm9uU2hhcmVkTm9k
ZShOb2RlKiBuKQogewogICAgIGlmIChuICYmIG4tPmlzUHNldWRvRWxlbWVudCgpKQotICAgICAg
ICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGFkYzA3MDguLmFiNzI1ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTYxMSw3ICs2MTEsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhl
IGdlbmVyYXRpb24gb2YgdGhpcyByZW5kZXJlci4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFz
IG5vZGUoKSBleGNlcHQgZm9yIHJlbmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKICAgICAv
LyBwc2V1ZG8gZWxlbWVudHMgZm9yIHdoaWNoIHRoZWlyIHBhcmVudCBub2RlIGlzIHJldHVybmVk
LgotICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVt
ZW50KCkgPyBub2RlKCktPnBhcmVudE9ySG9zdE5vZGUoKSA6IG5vZGUoKTsgfQorICAgIE5vZGUq
IGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkgPyBub2Rl
KCktPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSA6IG5vZGUoKTsgfQogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpOyB9CiAgICAgRnJh
bWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDcyMzYyYjku
LmEzYjRhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2Rl
KiBub2RlKQogICAgIEVsZW1lbnQqIGJvZHkgPSBub2RlLT5kb2N1bWVudCgpLT5ib2R5KCk7CiAg
ICAgTm9kZSogcGFyZW50OwogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG47IG4gPSBwYXJlbnQp
IHsKLSAgICAgICAgcGFyZW50ID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBwYXJl
bnQgPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIGlmIChuICE9IG5vZGUp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwogICAgICAgICBpZiAo
cGFyZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDgyMzU2MmIuLjlhYzVjZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBA
IC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIHZvaWQgZ2V0RWxlbWVudENUTShTVkdFbGVtZW50KiBl
bGVtZW50LCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICAgICAgaWYgKGN1cnJlbnRF
bGVtZW50ID09IHN0b3BBdEVsZW1lbnQpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBjdXJyZW50ID0g
Y3VycmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCmluZGV4IGIwNTQzNmEuLmE3ZTNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmlzT3V0ZXJt
b3N0U1ZHU1ZHRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gSWYgd2UncmUgbGl2aW5nIGluIGEgc2hh
ZG93IHRyZWUsIHdlJ3JlIGEgPHN2Zz4gZWxlbWVudCB0aGF0IGdvdCBjcmVhdGVkIGFzIHJlcGxh
Y2VtZW50CiAgICAgLy8gZm9yIGEgPHN5bWJvbD4gZWxlbWVudCBvciBhIGNsb25lZCA8c3ZnPiBl
bGVtZW50IGluIHRoZSByZWZlcmVuY2VkIHRyZWUuIEluIHRoYXQgY2FzZQogICAgIC8vIHdlJ3Jl
IGFsd2F5cyBhbiBpbm5lciA8c3ZnPiBlbGVtZW50LgotICAgIGlmIChpc0luU2hhZG93VHJlZSgp
ICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRPckhvc3RFbGVtZW50KCktPmlzU1ZH
RWxlbWVudCgpKQorICAgIGlmIChpc0luU2hhZG93VHJlZSgpICYmIHBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSAmJiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBFbGVtZW50IG1heSBub3QgYmUgaW4g
dGhlIGRvY3VtZW50LCBwcmV0ZW5kIHdlJ3JlIG91dGVybW9zdCBmb3Igdmlld3BvcnQoKSwgZ2V0
Q1RNKCksIGV0Yy4KQEAgLTE4NywxMiArMTg3LDEyIEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkKIAogU1ZHU1ZHRWxlbWVudCogU1ZHRWxl
bWVudDo6b3duZXJTVkdFbGVtZW50KCkgY29uc3QKIHsKLSAgICBDb250YWluZXJOb2RlKiBuID0g
cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU1ZH
RWxlbWVudCo+KG4pOwogCi0gICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAg
ICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IDA7CkBAIC0yMDIsMTIgKzIwMiwxMiBAQCBTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojp2aWV3cG9y
dEVsZW1lbnQoKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgc2hhZG93IHRy
ZWUgc3VwcG9ydCAtIGFzIFJlbmRlclNWR0NvbnRhaW5lciB1c2VzIHRoaXMgZnVuY3Rpb24KICAg
ICAvLyB0byBkZXRlcm1pbmUgdGhlICJvdmVyZmxvdyIgcHJvcGVydHkuIDx1c2U+IG9uIDxzeW1i
b2w+IHdvdWxkbid0IHdvcmsgb3RoZXJ3aGlzZS4KLSAgICBDb250YWluZXJOb2RlKiBuID0gcGFy
ZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIG4gPSBwYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnN2Z1RhZykgfHwgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpIHx8IG4t
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykpCiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG4pOwogCi0gICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3RO
b2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIDA7CkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIGJvb2wgaGFzTG9hZExp
c3RlbmVyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGZvciAoZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsgZWxlbWVudDsg
ZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAoZWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsgZWxlbWVudDsgZWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBj
b25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSA9IGVsZW1lbnQtPmdldEV2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGVudHJ5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlbaV0udXNlQ2Fw
dHVyZSkKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnNlbmRTVkdMb2FkRXZl
bnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMpCiAgICAgd2hpbGUgKGN1cnJl
bnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC0+aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkp
IHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudDsKICAgICAgICAgaWYgKHNlbmRQYXJl
bnRMb2FkRXZlbnRzKQotICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+cGFyZW50
T3JIb3N0RWxlbWVudCgpOyAvLyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBkaXNwYXRjaCB0b28g
aW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVlCisgICAgICAgICAg
ICBwYXJlbnQgPSBjdXJyZW50VGFyZ2V0LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IC8v
IHNhdmUgdGhlIG5leHQgcGFyZW50IHRvIGRpc3BhdGNoIHRvbyBpbmNhc2UgZGlzcGF0Y2hpbmcg
dGhlIGV2ZW50IGNoYW5nZXMgdGhlIHRyZWUKICAgICAgICAgaWYgKGhhc0xvYWRMaXN0ZW5lcihj
dXJyZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKICAgICAgICAgY3VycmVudFRhcmdldCA9IChwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1l
bnQoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0VsZW1lbnQ+KHBhcmVudCkgOiBSZWZQdHI8
U1ZHRWxlbWVudD4oKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKICAgICAgICAgcmV0dXJuIGRv
Y3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVGb3JFbGVtZW50KHRoaXMpOwogCiAgICAg
UmVuZGVyU3R5bGUqIHN0eWxlID0gMDsKLSAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50
T3JIb3N0RWxlbWVudCgpKSB7CisgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9yU2hh
ZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHN0eWxlID0gcmVuZGVyZXItPnN0eWxl
KCk7CiAgICAgfQpAQCAtNjE3LDcgKzYxNyw3IEBAIFJlbmRlclN0eWxlKiBTVkdFbGVtZW50Ojpj
b21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgICAgIHJl
dHVybiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwogCiAg
ICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMDsKLSAgICBpZiAoRWxlbWVudCogcGFyZW50
ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBh
cmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHBhcmVudFN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5oCmluZGV4IGNlMTYyNWEuLjg5M2Y2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
U1ZHRWxlbWVudEluc3RhbmNlKCk7CiAKLSAgICB2b2lkIHNldFBhcmVudE9ySG9zdE5vZGUoU1ZH
RWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBtX3BhcmVudEluc3RhbmNlID0gaW5zdGFuY2U7
IH0KKyAgICB2b2lkIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoU1ZHRWxlbWVudEluc3RhbmNl
KiBpbnN0YW5jZSkgeyBtX3BhcmVudEluc3RhbmNlID0gaW5zdGFuY2U7IH0KIAogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRl
eCA0MWEyMmFhLi5mYWQwMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
b250ZQogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcy
OTcpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBmb3JlaWdu
T2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBoZW5jZSBpdCBpcyBzYWZlCiAgICAgLy8g
dG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0aGF0IGNoYW5nZXMsIHRoaXMgbWV0aG9k
IHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQotICAgIC8vIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBp
bnN0ZWFkLgorICAgIC8vIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSBpbnN0ZWFkLgogICAg
IEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50RWxlbWVudCgpOwogICAgIHdoaWxlIChhbmNlc3Rv
ciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9yLT5y
ZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJlcigpLT5pc1NWR0hpZGRlbkNvbnRhaW5lcigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggMWJmMTMxYi4uMTYwMzA4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTVkdH
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7
CiAgICAgLy8gVW5saWtlIFNWR1N0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoKSwgd2Ug
c3RpbGwgY3JlYXRlIHJlbmRlcmVycywgZXZlbiBpZgogICAgIC8vIGRpc3BsYXkgaXMgc2V0IHRv
ICdub25lJyAtIHdoaWNoIGlzIHNwZWNpYWwgdG8gU1ZHIDxnPiBjb250YWluZXIgZWxlbWVudHMu
Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRPckhvc3RFbGVtZW50
KCktPmlzU1ZHRWxlbWVudCgpOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50
KCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAppbmRleCA0MTVmNzBjLi5kNGYzMTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg
Ym9vbCBpc1ZpZXdwb3J0RWxlbWVudChOb2RlKiBub2RlKQogU1ZHRWxlbWVudCogU1ZHTG9jYXRh
YmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVsZW1l
bnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBh
cmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVsZW1l
bnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJl
bnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoaXNWaWV3cG9y
dEVsZW1lbnQoY3VycmVudCkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KGN1cnJlbnQpOwogICAgIH0KQEAgLTU1LDcgKzU1LDcgQEAgU1ZHRWxlbWVudCogU1ZH
TG9jYXRhYmxlOjpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBTVkdFbGVtZW50KiBmYXJ0aGVzdCA9
IDA7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JIb3N0RWxl
bWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgp
KSB7CisgICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0gZWxlbWVudC0+cGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc1ZpZXdwb3J0RWxlbWVudChjdXJyZW50KSkK
ICAgICAgICAgICAgIGZhcnRoZXN0ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGN1cnJlbnQp
OwogICAgIH0KQEAgLTg0LDcgKzg0LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6
Y29tcHV0ZUNUTShTVkdFbGVtZW50KiBlbGVtZW50LCBDVE1TY29wZSBtb2RlLCBTdHkKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gY3RtOwogCiAgICAgU1ZHRWxlbWVudCogc3RvcEF0RWxlbWVudCA9IG1v
ZGUgPT0gTmVhcmVzdFZpZXdwb3J0U2NvcGUgPyBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KGVsZW1l
bnQpIDogMDsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDsgY3Vy
cmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPnBhcmVudE9ySG9z
dEVsZW1lbnQoKSkgeworICAgIGZvciAoRWxlbWVudCogY3VycmVudEVsZW1lbnQgPSBlbGVtZW50
OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmICghY3VycmVudEVsZW1lbnQtPmlz
U1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcAppbmRleCA1MzRmODY0Li5iZWU0ZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBTVkdTdHls
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KQogICAgIC8vIFNwZWM6IFNWRyBhbGxvd3MgaW5jbHVzaW9uIG9mIGVsZW1lbnRzIGZy
b20gZm9yZWlnbiBuYW1lc3BhY2VzIGFueXdoZXJlCiAgICAgLy8gd2l0aCB0aGUgU1ZHIGNvbnRl
bnQuIEluIGdlbmVyYWwsIHRoZSBTVkcgdXNlciBhZ2VudCB3aWxsIGluY2x1ZGUgdGhlIHVua25v
d24KICAgICAvLyBlbGVtZW50cyBpbiB0aGUgRE9NIGJ1dCB3aWxsIG90aGVyd2lzZSBpZ25vcmUg
dW5rbm93biBlbGVtZW50cy4gCi0gICAgaWYgKCFwYXJlbnRPckhvc3RFbGVtZW50KCkgfHwgcGFy
ZW50T3JIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKKyAgICBpZiAoIXBhcmVudE9yU2hh
ZG93SG9zdEVsZW1lbnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCktPmlzU1ZHRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOTJlN2FjLi5hM2Y1
MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMtMDEtMzAgIENoYW5naHVuIEth
bmcgIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgUmVuYW1lIGZyb20gcGFy
ZW50T3JIb3N0KiB0byBwYXJlbnRPclNoYWRvd0hvc3QqIGluIE5vZGUuaC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKIDIwMTMtMDEtMzAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNjk1ODI3PiBQ
UFQ6IE1ha2UgbG9hZGluZyBmaWxlIFVSTHMgd29yayB3aXRoIGEgc2FuZGJveGVkIE5ldHdvcmtQ
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYWVkYTEyMC4uZTYxOTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBXZWJQYWdlOjpo
aWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3Qg
SW50U2l6ZSYKICNlbmRpZgogICAgICAgICAvLyBGaW5kIHRoZSBub2RlIHRvIGhpZ2hsaWdodC4g
VGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIG5vZGUgcmVzcG9uZGluZyB0aGUgdGFwIGdlc3R1
cmUsIGJlY2F1c2UgbWFueQogICAgICAgICAvLyBwYWdlcyBoYXMgYSBnbG9iYWwgY2xpY2sgaGFu
ZGxlciBhbmQgd2UgZG8gbm90IHdhbnQgdG8gaGlnaGxpZ2h0IHRoZSBib2R5LgotICAgICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBhZGp1c3RlZE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBub2RlID0gYWRqdXN0ZWROb2RlOyBu
b2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSB8fCBub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLS0gCjEuNy45LjUKCg==
</data>
<flag name="commit-queue"
          id="204734"
          type_id="3"
          status="-"
          setter="chkang514"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185622</attachid>
            <date>2013-01-30 16:47:49 -0800</date>
            <delta_ts>2013-09-05 10:49:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>52961</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSBjNjNmMjYzN2RhNmNlZTEzMTMxMWJjMzAwNTZhZmJmNWVlZmVkZDk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JG
aWx0ZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKystLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwICAgIHwgICAgMiArLQog
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgfCAgIDE0
ICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDIgKysrKysr
KysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyMyArKysrKy0tLS0tLQogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgICAgICB8ICAgMTIgKysrLS0t
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgICAgICB8ICAg
IDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggICAgICAg
IHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCAgICAg
ICAgICAgfCAgICA2ICstLQogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCAg
ICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9Ub3Vj
aEFkanVzdG1lbnQuY3BwICAgICAgICAgICAgfCAgICA4ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgICAgICB8ICAgIDIgKy0KIC4u
Li9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIHwgICAgMiAr
LQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAgfCAg
IDE4ICsrKystLS0tLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oICAg
ICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuY3BwICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5j
cHAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0
YWJsZS5jcHAgICAgICAgICAgICAgICAgfCAgICA2ICstLQogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuY3BwICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKysrKwogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAgICAyICstCiA0MyBm
aWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNTFjZjlkLi5mYzAyOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMDEtMzAgIENoYW5naHVuIEthbmcgIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5uZXQ+CisKKyAg
ICAgICAgUmVuYW1lIGZyb20gcGFyZW50T3JIb3N0KiB0byBwYXJlbnRPclNoYWRvd0hvc3QqIGlu
IE5vZGUuaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwODMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCiAyMDEzLTAxLTMwICBKb2Ug
TWFzb24gIDxqbWFzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTmV2ZXIgc3Rv
cmUgZW1wdHkgY3JlZGVudGlhbHMgaW4gTmV0d29ya0pvYjo6c3RvcmVDcmVkZW50aWFscwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA2ZWI5NmQ3Li5mM2I4
ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjE4
LDggKzIxOCw4IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIGlmIChu
b2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKTsK
IAotICAgICAgICB3aGlsZSAobm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQotICAgICAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgd2hpbGUgKG5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDYyY2QyZDMu
LjJlYzk3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBOb2RlKiBWOEdDQ29udHJvbGxlcjo6b3BhcXVlUm9v
dEZvckdDKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vZGUgPSBvd25lckVsZW1lbnQ7CiAgICAgfQog
Ci0gICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAg
ICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQog
ICAgICAgICBub2RlID0gcGFyZW50OwogCiAgICAgcmV0dXJuIG5vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yRmlsdGVyLmNwcAppbmRleCA2MWY5ZGZlLi5lYWY4ODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTUzLDggKzUzLDggQEAgc3RhdGljIGlubGluZSB2
b2lkIGNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBWZWN0b3IKIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnB1c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1l
bnQqIHBhcmVudCkKIHsKICAgICBBU1NFUlQobV9hbmNlc3RvcklkZW50aWZpZXJGaWx0ZXIpOwot
ICAgIEFTU0VSVChtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCBtX3BhcmVudFN0YWNrLmxhc3Qo
KS5lbGVtZW50ID09IHBhcmVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKTsKLSAgICBBU1NFUlQo
IW1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8ICFwYXJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQo
KSk7CisgICAgQVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50U3RhY2su
bGFzdCgpLmVsZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpOwor
ICAgIEFTU0VSVCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnRTdGFj
a0ZyYW1lKHBhcmVudCkpOwogICAgIFBhcmVudFN0YWNrRnJhbWUmIHBhcmVudEZyYW1lID0gbV9w
YXJlbnRTdGFjay5sYXN0KCk7CiAgICAgLy8gTWl4IHRhZ3MsIGNsYXNzIG5hbWVzIGFuZCBpZHMg
aW50byBzb21lIHNvcnQgb2Ygd2VpcmQgYm91aWxsYWJhaXNzZS4KQEAgLTg3LDEzICs4NywxMyBA
QCB2b2lkIFNlbGVjdG9yRmlsdGVyOjpzZXR1cFBhcmVudFN0YWNrKEVsZW1lbnQqIHBhcmVudCkK
ICAgICBtX3BhcmVudFN0YWNrLnNocmluaygwKTsKICAgICBtX2FuY2VzdG9ySWRlbnRpZmllckZp
bHRlciA9IGFkb3B0UHRyKG5ldyBCbG9vbUZpbHRlcjxibG9vbUZpbHRlcktleUJpdHM+KTsKICAg
ICAvLyBGYXN0IHZlcnNpb24gaWYgcGFyZW50IGlzIGEgcm9vdCBlbGVtZW50OgotICAgIGlmICgh
cGFyZW50LT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICBpZiAoIXBhcmVudC0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gT3RoZXJ3aXNlIGNsaW1iIHVwIHRoZSB0
cmVlLgogICAgIFZlY3RvcjxFbGVtZW50KiwgMzA+IGFuY2VzdG9yczsKLSAgICBmb3IgKEVsZW1l
bnQqIGFuY2VzdG9yID0gcGFyZW50OyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50T3JIb3N0RWxlbWVudCgpKQorICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnQ7
IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50
KCkpCiAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0b3IpOwogICAgIGZvciAoc2l6ZV90
IG4gPSBhbmNlc3RvcnMuc2l6ZSgpOyBuOyAtLW4pCiAgICAgICAgIHB1c2hQYXJlbnRTdGFja0Zy
YW1lKGFuY2VzdG9yc1tuIC0gMV0pOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2VsZWN0b3JG
aWx0ZXI6OnB1c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KQogICAgIEFTU0VSVChtX2FuY2VzdG9y
SWRlbnRpZmllckZpbHRlcik7CiAgICAgLy8gV2UgbWF5IGdldCBpbnZva2VkIGZvciBzb21lIHJh
bmRvbSBlbGVtZW50cyBpbiBzb21lIHdhY2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlLgog
ICAgIC8vIFBhdXNlIG1haW50YWluaW5nIHRoZSBzdGFjayBpbiB0aGlzIGNhc2UuCi0gICAgaWYg
KG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVt
ZW50KCkpCisgICAgaWYgKG1fcGFyZW50U3RhY2subGFzdCgpLmVsZW1lbnQgIT0gcGFyZW50LT5w
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBwdXNoUGFy
ZW50U3RhY2tGcmFtZShwYXJlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDg4NTM4NWYuLmMzNTYyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0
eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogCiB2b2lkIFN0
eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBj
b25zdCBDb250YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RF
bGVtZW50KCk7CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50c1BhcmVudCA9IHBhcmVu
dC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogCiAgICAgLy8gV2UgYXJlIG5vdCBhbHdh
eXMgaW52b2tlZCBjb25zaXN0ZW50bHkuIEZvciBleGFtcGxlLCBzY3JpcHQgZXhlY3V0aW9uIGNh
biBjYXVzZSB1cyB0byBlbnRlcgogICAgIC8vIHN0eWxlIHJlY2FsYyBpbiB0aGUgbWlkZGxlIG9m
IHRyZWUgYnVpbGRpbmcuIFdlIG1heSBhbHNvIGJlIGludm9rZWQgZnJvbSBzb21ld2hlcmUgd2l0
aGluIHRoZSB0cmVlLgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVz
aFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogCiAgICAgLy8gTm90ZTogV2UgbXVzdG4n
dCBza2lwIFNoYWRvd1Jvb3Qgbm9kZXMgZm9yIHRoZSBzY29wZSBzdGFjay4KICAgICBpZiAobV9z
Y29wZVJlc29sdmVyKQotICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPnB1c2gocGFyZW50LCBwYXJl
bnQtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVzaChw
YXJlbnQsIHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIH0KIAogdm9pZCBTdHls
ZVJlc29sdmVyOjpwb3BQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNS4uODQ1OGQ4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayhjb25zdCBDb250YWluZXJO
b2RlKiBwYXJlbnQpCiAKICAgICBtX3N0YWNrLnNocmluaygwKTsKICAgICBpbnQgYXV0aG9yU3R5
bGVCb3VuZHNJbmRleCA9IDA7Ci0gICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9
IHBhcmVudDsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAg
IGZvciAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnQ7IHNjb3BlOyBzY29wZSA9
IHNjb3BlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgUnVsZVNldCogcnVs
ZVNldCA9IHJ1bGVTZXRGb3Ioc2NvcGUpOwogICAgICAgICBpZiAocnVsZVNldCkKICAgICAgICAg
ICAgIG1fc3RhY2suYXBwZW5kKFN0YWNrRnJhbWUoc2NvcGUsIGF1dGhvclN0eWxlQm91bmRzSW5k
ZXgsIHJ1bGVTZXQpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZl
cjo6cG9wKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgICAgICAgICAgbV9zdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hh
ZG93Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCiAgICAgICAgICAgICAtLW1fc3Rh
Y2tQYXJlbnRCb3VuZHNJbmRleDsKLSAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgICAgIG1fc3RhY2tQYXJlbnQgPSBzY29wZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IDRmNDY1YTEu
LjVkOWVkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBBdHRyOjpj
cmVhdGVUZXh0Q2hpbGQoKQogCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRoaW5nIGFwcGVu
ZENoaWxkKCkgd291bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1faWdub3JlQ2hp
bGRyZW5DaGFuZ2VkIHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3JlIGVmZmljaWVu
dGx5LgotICAgICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICAg
ICAgdGV4dE5vZGUtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUodGhpcyk7CiAgICAgICAgIHNl
dEZpcnN0Q2hpbGQodGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICBzZXRMYXN0Q2hpbGQodGV4dE5v
ZGUuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5jcHAKaW5kZXggYWI1OGQ2MS4uMTQ3NjJjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBA
QCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cGFyZW50KCkKIE5vZGUqIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50
VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykgY29uc3QKIHsKICAgICBpZiAobm9kZS0+aXNQc2V1
ZG9FbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7Cisg
ICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICBpZiAo
IWNhbkNyb3NzVXBwZXJCb3VuZGFyeSgpICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAg
ICAgIEFTU0VSVCh0b1NoYWRvd1Jvb3Qobm9kZSktPmlzWW91bmdlc3QoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNTY0ZDlkMi4uMmNiZGM5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgQ29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNo
aWxkLCBFeGNlCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGlu
ZyIuCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qg
b2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFy
ZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCkpOwogCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTMx
OSw3ICszMTksNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbihOb2Rl
KiBuZXh0Q2hpbGQsIE5vZGUqIG5ld0NoaWxkKQogICAgICAgICBBU1NFUlQobV9maXJzdENoaWxk
ID09IG5leHRDaGlsZCk7CiAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5ld0NoaWxkOwogICAgIH0K
LSAgICBuZXdDaGlsZC0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICBuZXdDaGlsZC0+
c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSh0aGlzKTsKICAgICBuZXdDaGlsZC0+c2V0UHJldmlv
dXNTaWJsaW5nKHByZXYpOwogICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQp
OwogfQpAQCAtMzUyLDcgKzM1Miw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiB7CiAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYgaXQg
aXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlv
biBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JIb3N0Tm9kZSgpKTsK
KyAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCiAg
ICAgUmVmUHRyPE5vZGU+IHByb3RlY3QodGhpcyk7CiAKQEAgLTQ3NCw3ICs0NzQsNyBAQCBib29s
IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4K
ICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBz
ZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRP
ckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNTUxLDcg
KzU1MSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91
c0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG9sCiAKICAgICBvbGRDaGlsZC0+c2V0UHJl
dmlvdXNTaWJsaW5nKDApOwogICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKLSAgICBv
bGRDaGlsZC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICBvbGRDaGlsZC0+c2V0UGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgwKTsKIAogICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xk
Q2hpbGQpOwogfQpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3Zl
Q2hpbGRyZW4oKQogICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzY3JlcGFuY3kgYmV0d2VlbiBy
ZW1vdmVDaGlsZCgpIGFuZCBpdHMgb3B0aW1pemVkIHZlcnNpb24gcmVtb3ZlQ2hpbGRyZW4oKS4K
ICAgICAgICAgICAgICAgICBuLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAgICAgICAgICAgICAg
ICAgbi0+c2V0TmV4dFNpYmxpbmcoMCk7Ci0gICAgICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JI
b3N0Tm9kZSgwKTsKKyAgICAgICAgICAgICAgICBuLT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KDApOwogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQobi5nZXQoKSk7
CiAKICAgICAgICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwpAQCAtNjQ1LDcgKzY0NSw3
IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdD
aGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9k
ZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQg
YXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQo
cmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgp
IHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKICAgICBlYyA9IDA7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDEzMjFkZmQuLjliNzk4MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaApAQCAtMjY2LDcgKzI2Niw3IEBAIGlubGluZSBib29sIE5vZGU6Om5l
ZWRzU2hhZG93VHJlZVdhbGtlcigpIGNvbnN0CiB7CiAgICAgaWYgKGdldEZsYWcoTmVlZHNTaGFk
b3dUcmVlV2Fsa2VyRmxhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJl
bnQgPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJl
bnQtPmdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggNjhlNzI4Zi4uYTI1Y2Jm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAg
LTEwOCw3ICsxMDgsNyBAQCBpbmxpbmUgdm9pZCByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250
YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKIHRlbXBsYXRlPGNsYXNzIEdl
bmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KIGlubGluZSB2b2lkIGFwcGVu
ZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5l
ciogY29udGFpbmVyKQogewotICAgIGNoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKGNvbnRhaW5l
cik7CisgICAgY2hpbGQtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoY29udGFpbmVyKTsKIAog
ICAgIEdlbmVyaWNOb2RlKiBsYXN0Q2hpbGQgPSBjb250YWluZXItPmxhc3RDaGlsZCgpOwogICAg
IGlmIChsYXN0Q2hpbGQpIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7
CiAgICAgICAgICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIG4tPnNl
dFByZXZpb3VzU2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwot
ICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgICAgIG4tPnNl
dFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7CiAKICAgICAgICAgICAgIGlmICghbi0+cmVmQ291
bnQoKSkgewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGFjOGU5
ODYuLjkzYjZhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTg0Nyw3ICs1ODQ3LDcg
QEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICAvLyBJZiBpdCBoYXNuJ3QsIHdlIGRvIG5v
dCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgIE5vZGUqIG5ld0hvdmVyTm9kZSA9IGlubmVyRWxl
bWVudEluRG9jdW1lbnQ7CiAgICAgd2hpbGUgKG5ld0hvdmVyTm9kZSAmJiAhbmV3SG92ZXJOb2Rl
LT5yZW5kZXJlcigpKQotICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdIb3Zlck5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbmV3SG92ZXJOb2RlID0gbmV3SG92ZXJOb2RlLT5wYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGN1cnJlbnQgaG92ZXIg
bm9kZS4KICAgICBzZXRIb3Zlck5vZGUobmV3SG92ZXJOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggODU4ZTQ1OS4uYTY0OGE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1OTAsNyAr
MTU5MCw3IEBAIGlubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKIAogaW5s
aW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUp
CiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQotICAgICwgbV9wYXJlbnRPckhvc3ROb2RlKDApCisg
ICAgLCBtX3BhcmVudE9yU2hhZG93SG9zdE5vZGUoMCkKICAgICAsIG1fdHJlZVNjb3BlKGRvY3Vt
ZW50KQogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggMzk3MTM3Ny4uOWRiMmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MjQ2MCw3ICsyNDYwLDcgQEAgU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIEVsZW1lbnQ6OnNwZWxs
Y2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6aXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0g
dGhpczsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkg
eworICAgIGZvciAoY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgc3dp
dGNoIChlbGVtZW50LT5zcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSkgewogICAgICAgICBjYXNl
IFNwZWxsY2hlY2tBdHRyaWJ1dGVUcnVlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCAyM2M1NjljLi5mNjRkZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTg1OSw3ICs4NTksNyBAQCBpbmxpbmUgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBOb2RlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZQogICAgIEFTU0VSVChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgc2V0RmxhZyhJbkRvY3VtZW50
RmxhZyk7Ci0gICAgaWYgKHBhcmVudE9ySG9zdE5vZGUoKS0+aXNJblNoYWRvd1RyZWUoKSkKKyAg
ICBpZiAocGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQogICAgICAg
ICBzZXRGbGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZGNmNmIzYS4uMTBiOWM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjU2LDcgKzI1Niw3IEBA
IGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVsZWFzZVBzZXVkb0VsZW1lbnQoUHNldWRv
RWxlbWVudCogZWxlbWVudCkKICAgICBBU1NFUlQoIWVsZW1lbnQtPm5leHRTaWJsaW5nKCkpOwog
ICAgIEFTU0VSVCghZWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCkpOwogCi0gICAgZWxlbWVudC0+
c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICBlbGVtZW50LT5zZXRQYXJlbnRPclNoYWRvd0hv
c3ROb2RlKDApOwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0
ZWRTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggZmNiMzdlMy4u
ZjMwMjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtMzYsNyArMzYs
NyBAQCBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNo
YWRvd0hvc3QsIFNoYWRvd1Jvb3Q6OlNoYWRvdwogewogICAgIFJlZlB0cjxTaGFkb3dSb290PiBz
aGFkb3dSb290ID0gU2hhZG93Um9vdDo6Y3JlYXRlKHNoYWRvd0hvc3QtPmRvY3VtZW50KCksIHR5
cGUpOwogCi0gICAgc2hhZG93Um9vdC0+c2V0UGFyZW50T3JIb3N0Tm9kZShzaGFkb3dIb3N0KTsK
KyAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKHNoYWRvd0hvc3QpOwog
ICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT50cmVlU2NvcGUo
KSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwogICAgIG1fZGlz
dHJpYnV0b3IuZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uoc2hhZG93SG9zdCk7CkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAg
ICAgICAgb2xkUm9vdC0+ZGV0YWNoKCk7CiAKICAgICAgICAgbV9zaGFkb3dSb290cy5yZW1vdmVI
ZWFkKCk7Ci0gICAgICAgIG9sZFJvb3QtPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CisgICAgICAg
IG9sZFJvb3QtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7CiAgICAgICAgIG9sZFJvb3Qt
PnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT5kb2N1bWVudCgpKTsKICAgICAgICAgb2xk
Um9vdC0+c2V0UHJldigwKTsKICAgICAgICAgb2xkUm9vdC0+c2V0TmV4dCgwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA0MTE2OTAxLi4xOGU1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MTAsNyAr
ODEwLDcgQEAgaW5saW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBl
IGNoYW5nZVR5cGUpCiAKIGlubGluZSB2b2lkIE5vZGU6Om1hcmtBbmNlc3RvcnNXaXRoQ2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCkKIHsKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIHAgPSBwYXJlbnRP
ckhvc3ROb2RlKCk7IHAgJiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFy
ZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpOwogCiAgICAgaWYgKGRvY3VtZW50KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpKQpA
QCAtMTAzNSw3ICsxMDM1LDcgQEAgYm9vbCBOb2RlOjpjb250YWlucyhjb25zdCBOb2RlKiBub2Rl
KSBjb25zdAogCiBib29sIE5vZGU6OmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCkpIHsKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSkgewogICAgICAgICBpZiAobm9kZSA9PSB0aGlzKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgYm9vbCBOb2RlOjpjb250
YWluc0luY2x1ZGluZ0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogICAgICAg
ICBpZiAobm9kZS0+aXNEb2N1bWVudEZyYWdtZW50KCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnRGcmFnbWVudCo+KG5vZGUpLT5pc1RlbXBsYXRlQ29udGVudCgpKQogICAgICAgICAgICAg
bm9kZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQq
Pihub2RlKS0+aG9zdCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKQEAgLTExOTYs
NyArMTE5Niw3IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdB
bmRTdHlsZSgpCiAKIFJlbmRlclN0eWxlKiBOb2RlOjp2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1
ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewotICAgIHJldHVybiBwYXJlbnRPckhvc3RO
b2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCktPmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNw
ZWNpZmllcikgOiAwOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgPyBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCktPmNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmll
cikgOiAwOwogfQogCiBpbnQgTm9kZTo6bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKQEAgLTEy
MTksNyArMTIxOSw3IEBAIGJvb2wgTm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogICAg
ICAgICBpZiAoc3R5bGUtPnVzZXJEcmFnKCkgPT0gRFJBR19FTEVNRU5UICYmIHN0eWxlLT51c2Vy
U2VsZWN0KCkgPT0gU0VMRUNUX05PTkUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCktPmNh
blN0YXJ0U2VsZWN0aW9uKCkgOiB0cnVlOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCkgPyBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0
cnVlOwogfQogCiBFbGVtZW50KiBOb2RlOjpzaGFkb3dIb3N0KCkgY29uc3QKQEAgLTEyNjQsOSAr
MTI2NCw5IEBAIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/
IHBhcmVudCA6IDA7CiB9CiAKLUVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVsZW1lbnQoKSBj
b25zdAorRWxlbWVudCogTm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0CiB7
Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENv
bnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBpZiAo
IXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5MDEsOSArMTkwMSw5IEBAIHZvaWQg
Tm9kZTo6c2hvd05vZGVQYXRoRm9yVGhpcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPGNvbnN0IE5v
ZGUqLCAxNj4gY2hhaW47CiAgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7Ci0gICAgd2hpbGUg
KG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIHdoaWxlIChub2RlLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgY2hhaW4uYXBwZW5kKG5vZGUpOwotICAgICAgICBu
b2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
Y2hhaW4uc2l6ZSgpOyBpbmRleCA+IDA7IC0taW5kZXgpIHsKICAgICAgICAgY29uc3QgTm9kZSog
bm9kZSA9IGNoYWluW2luZGV4IC0gMV07CkBAIC0xOTU4LDcgKzE5NTgsNyBAQCBzdGF0aWMgdm9p
ZCB0cmF2ZXJzZVRyZWVBbmRNYXJrKGNvbnN0IFN0cmluZyYgYmFzZUluZGVudCwgY29uc3QgTm9k
ZSogcm9vdE5vZGUsCiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBpbmRlbnQ7CiAgICAgICAgIGlu
ZGVudC5hcHBlbmQoYmFzZUluZGVudCk7Ci0gICAgICAgIGZvciAoY29uc3QgTm9kZSogdG1wTm9k
ZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1wTm9kZSAhPSByb290Tm9kZTsgdG1wTm9kZSA9IHRtcE5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgZm9yIChjb25zdCBOb2RlKiB0bXBOb2Rl
ID0gbm9kZTsgdG1wTm9kZSAmJiB0bXBOb2RlICE9IHJvb3ROb2RlOyB0bXBOb2RlID0gdG1wTm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICAgICAgaW5kZW50LmFwcGVuZCgn
XHQnKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGluZGVudC50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICBub2RlLT5zaG93Tm9kZSgpOwpAQCAtMTk3NSw4ICsxOTc1
LDggQEAgdm9pZCBOb2RlOjpzaG93VHJlZUFuZE1hcmsoY29uc3QgTm9kZSogbWFya2VkTm9kZTEs
IGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMSwgY28KIHsKICAgICBjb25zdCBOb2RlKiByb290Tm9k
ZTsKICAgICBjb25zdCBOb2RlKiBub2RlID0gdGhpczsKLSAgICB3aGlsZSAobm9kZS0+cGFyZW50
T3JIb3N0Tm9kZSgpICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQotICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIHdoaWxlIChub2RlLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkgJiYgIW5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCisgICAgICAgIG5v
ZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgcm9vdE5vZGUgPSBub2Rl
OwogCiAgICAgU3RyaW5nIHN0YXJ0aW5nSW5kZW50OwpAQCAtMTk5Nyw5ICsxOTk3LDkgQEAgdm9p
ZCBOb2RlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnV0ZjgoKS5kYXRhKCksIGxlbmd0aCAt
IDEpOwogfQogCi1zdGF0aWMgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0T3JGcmFtZU93bmVy
KGNvbnN0IE5vZGUqIG5vZGUpCitzdGF0aWMgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFkb3dI
b3N0T3JGcmFtZU93bmVyKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCAm
JiBub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAg
IHBhcmVudCA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAg
IHJldHVybiBwYXJlbnQ7CkBAIC0yMDI3LDggKzIwMjcsOCBAQCBzdGF0aWMgdm9pZCBzaG93U3Vi
VHJlZUFjcm9zc0ZyYW1lKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUs
IGNvbgogdm9pZCBOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0CiB7CiAg
ICAgTm9kZSogcm9vdE5vZGUgPSBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKLSAgICB3aGlsZSAo
cGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKSkKLSAgICAgICAgcm9vdE5vZGUgPSBw
YXJlbnRPckhvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpOworICAgIHdoaWxlIChwYXJlbnRPclNo
YWRvd0hvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpKQorICAgICAgICByb290Tm9kZSA9IHBhcmVu
dE9yU2hhZG93SG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSk7CiAgICAgc2hvd1N1YlRyZWVBY3Jv
c3NGcmFtZShyb290Tm9kZSwgdGhpcywgIiIpOwogfQogCkBAIC0yMDYxLDcgKzIwNjEsNyBAQCB2
b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29u
c3QKIAogTm9kZSogTm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkKIHsKLSAg
ICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUt
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAvLyBGb3IgaW1hZ2VtYXBzLCB0
aGUgZW5jbG9zaW5nIGxpbmsgbm9kZSBpcyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1lbnQgbm90
IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAgICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFnZXMgYmUg
dGhlIGVuY2xvc2luZ0xpbmtOb2RlLCBldmVuIHRob3VnaCBpc0xpbmsgc29tZXRpbWVzIHJldHVy
bnMgdHJ1ZQogICAgICAgICAvLyBmb3IgdGhlbS4KQEAgLTI0OTAsNyArMjQ5MCw3IEBAIHZvaWQg
Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxz
ZWxlY3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRo
aXM7CiAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
KQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9N
KTsKICAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyZW50T3JIb3N0Tm9kZSk7CisgICAgaW5mby5h
ZGRNZW1iZXIobV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X3RyZWVTY29wZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX3ByZXZpb3VzKTsKQEAgLTI2MjcsNyArMjYyNyw3IEBAIHZvaWQgTm9kZTo6dXBkYXRl
QW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0CiAgICAgaWYg
KCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50
T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAg
IGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+ZGVjcmVtZW50
Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3VudCk7CiB9CiAKQEAgLTI2MzgsNyArMjYzOCw3IEBA
IHZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0
aW9uKCkgY29uc3QKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JTaGFkb3dIb3N0
Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAg
ICAgICBub2RlLT5pbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggOTJmYjJiOS4uMDA5NjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNzUsMTAg
KzI3NSw5IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9k
ZSgpOwogCiAgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUgaG9zdC4KLSAgICAvLyBG
SVhNRTogVGhlc2UgbWV0aG9kcyBzaG91bGQgYmUgcmVuYW1lZCBwYXJlbnRPclNoYWRvd0hvc3Qq
Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0OwotICAgIEVsZW1l
bnQqIHBhcmVudE9ySG9zdEVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhcmVudE9ySG9z
dE5vZGUoQ29udGFpbmVyTm9kZSopOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKSBjb25zdDsKKyAgICBFbGVtZW50KiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKENvbnRhaW5lck5v
ZGUqKTsKICAgICBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoKSBjb25zdDsKIAogICAgIC8vIFVzZSB3
aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd0hvc3QgaXMgMC4KQEAgLTc3OCw3ICs3
NzcsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGU+OwogCiAg
ICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotICAgIGJvb2wgaGFzVHJlZVNoYXJlZFBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuICEhcGFyZW50T3JIb3N0Tm9kZSgpOyB9CisgICAgYm9vbCBoYXNUcmVl
U2hhcmVkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gISFwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7
IH0KIAogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNobHlFZGl0YWJsZSB9
OwogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlTGV2ZWwsIFVzZXJTZWxlY3RB
bGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgY29uc3Q7CkBA
IC04MTIsNyArODExLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24qPiogdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAKICAg
ICBtdXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwotICAgIENvbnRhaW5lck5vZGUqIG1fcGFy
ZW50T3JIb3N0Tm9kZTsKKyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE9yU2hhZG93SG9zdE5v
ZGU7CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwog
ICAgIE5vZGUqIG1fbmV4dDsKQEAgLTg0OCwyNyArODQ3LDI3IEBAIGlubGluZSB2b2lkIGFkZFN1
YnJlc291cmNlVVJMKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJMJiB1cmwpCiAg
ICAgICAgIHVybHMuYWRkKHVybCk7CiB9CiAKLWlubGluZSB2b2lkIE5vZGU6OnNldFBhcmVudE9y
SG9zdE5vZGUoQ29udGFpbmVyTm9kZSogcGFyZW50KQoraW5saW5lIHZvaWQgTm9kZTo6c2V0UGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZShDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3BhcmVudE9ySG9zdE5vZGUgPSBwYXJlbnQ7CisgICAg
bV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlID0gcGFyZW50OwogfQogCi1pbmxpbmUgQ29udGFpbmVy
Tm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0CitpbmxpbmUgQ29udGFpbmVyTm9k
ZSogTm9kZTo6cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZE9yR0NUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fcGFyZW50T3JIb3N0Tm9kZTsK
KyAgICByZXR1cm4gbV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlOwogfQogCiBpbmxpbmUgQ29udGFp
bmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzU2hhZG93
Um9vdCgpID8gMCA6IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICByZXR1cm4gaXNTaGFkb3dSb290
KCkgPyAwIDogcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogfQogCiBpbmxpbmUgQ29udGFpbmVy
Tm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFpc1NoYWRvd1Jvb3QoKSk7Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKTsK
KyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogfQogCiBpbmxpbmUgdm9pZCBO
b2RlOjpyZWF0dGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggNzYx
ZWM2Zi4uZmMwMzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNTgs
MTMgKzU4LDEzIEBAIFBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50
LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICAsIG1fcHNldWRvSWQocHNldWRvSWQpCiB7CiAgICAg
QVNTRVJUKHBzZXVkb0lkICE9IE5PUFNFVURPKTsKLSAgICBzZXRQYXJlbnRPckhvc3ROb2RlKHBh
cmVudCk7CisgICAgc2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShwYXJlbnQpOwogICAgIHNldEhh
c0N1c3RvbUNhbGxiYWNrcygpOwogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9F
bGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKIHsKLSAgICByZXR1cm4gcGFyZW50T3JI
b3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lk
KTsKKyAgICByZXR1cm4gcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkKTsKIH0KIAogdm9pZCBQc2V1ZG9FbGVtZW50
OjphdHRhY2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYjYzOWU2OC4uNjM0NmQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7IH0KICAgICB2b2lkIHNldFJlc2V0U3R5bGVJbmhl
cml0YW5jZShib29sKTsKIAotICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiB0b0Vs
ZW1lbnQocGFyZW50T3JIb3N0Tm9kZSgpKTsgfQorICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7
IHJldHVybiB0b0VsZW1lbnQocGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsgfQogICAgIEVsZW1l
bnRTaGFkb3cqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gaG9zdCgpID8gaG9zdCgpLT5zaGFkb3co
KSA6IDA7IH0KIAogICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApp
bmRleCBiNWJkYWJiLi43MWYxZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNTMsOCArMjUzLDgg
QEAgc3RhdGljIGJvb2wgaXNTVkdTaGFkb3dUZXh0KFRleHQqIHRleHQpCiAKIHN0YXRpYyBib29s
IGlzU1ZHVGV4dChUZXh0KiB0ZXh0KQogewotICAgIE5vZGUqIHBhcmVudE9ySG9zdE5vZGUgPSB0
ZXh0LT5wYXJlbnRPckhvc3ROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUtPmlz
U1ZHRWxlbWVudCgpICYmICFwYXJlbnRPckhvc3ROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpm
b3JlaWduT2JqZWN0VGFnKTsKKyAgICBOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlID0gdGV4
dC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hv
c3ROb2RlLT5pc1NWR0VsZW1lbnQoKSAmJiAhcGFyZW50T3JTaGFkb3dIb3N0Tm9kZS0+aGFzVGFn
TmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCAwNDEzNzRjLi41Mjc1ZGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTg4NSw3ICsx
ODg1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpCiAg
ICAgICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9j
dXNlZE5vZGUodGFyZ2V0LCBtX2ZyYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQtPnBhcmVudE9ySG9zdE5vZGUo
KTsgCisgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsKICAgICAgICAgfQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9k
ZSgwKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXgg
YjYyMTE3MS4uNzcwYWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cApAQCAtMTc3LDcgKzE3Nyw3IEBAIHVuc2lnbmVkIEJpdFN0YWNrOjpzaXplKCkgY29uc3QKIHN0
YXRpYyB1bnNpZ25lZCBkZXB0aENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhOb2RlKiBub2RlKQog
ewogICAgIHVuc2lnbmVkIGRlcHRoID0gMDsKLSAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9z
dE5vZGUoKSkKKyAgICBmb3IgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KSkKICAgICAgICAgKytkZXB0aDsKICAgICByZXR1cm4gZGVwdGg7CiB9CkBAIC0xOTMsNyArMTkz
LDcgQEAgc3RhdGljIE5vZGUqIG5leHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVz
KE5vZGUqIHJhbmdlRW5kQ29udGFpbmVyLCBpbnQKICAgICAgICAgaWYgKE5vZGUqIG5leHQgPSBy
YW5nZUVuZENvbnRhaW5lci0+Y2hpbGROb2RlKHJhbmdlRW5kT2Zmc2V0KSkKICAgICAgICAgICAg
IHJldHVybiBuZXh0OwogICAgIH0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZUVuZENvbnRh
aW5lcjsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAo
Tm9kZSogbm9kZSA9IHJhbmdlRW5kQ29udGFpbmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChOb2RlKiBuZXh0ID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBuZXh0OwogICAgIH0KQEAgLTIzMSw3ICsy
MzEsNyBAQCBzdGF0aWMgdm9pZCBzZXRVcEZ1bGx5Q2xpcHBlZFN0YWNrKEJpdFN0YWNrJiBzdGFj
aywgTm9kZSogbm9kZSkKIHsKICAgICAvLyBQdXQgdGhlIG5vZGVzIGluIGEgdmVjdG9yIHNvIHdl
IGNhbiBpdGVyYXRlIGluIHJldmVyc2Ugb3JkZXIuCiAgICAgVmVjdG9yPE5vZGUqLCAxMDA+IGFu
Y2VzdHJ5OwotICAgIGZvciAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAo
Tm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBwYXJlbnQ7IHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBhbmNlc3Ry
eS5hcHBlbmQocGFyZW50KTsKIAogICAgIC8vIENhbGwgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlIG9u
IGVhY2ggbm9kZSBzdGFydGluZyB3aXRoIHRoZSBlYXJsaWVzdCBhbmNlc3Rvci4KQEAgLTQyNywx
NCArNDI3LDE0IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgICAgIG5l
eHQgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICBpZiAoIW5leHQpIHsKICAg
ICAgICAgICAgICAgICBib29sIHBhc3RFbmQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG1fbm9kZSkg
PT0gbV9wYXN0RW5kTm9kZTsKLSAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gbV9u
b2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9k
ZSA9IG1fbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICAgICAgICAgIHdo
aWxlICghbmV4dCAmJiBwYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgocGFz
dEVuZCAmJiBwYXJlbnROb2RlID09IG1fZW5kQ29udGFpbmVyKSB8fCBtX2VuZENvbnRhaW5lci0+
aXNEZXNjZW5kYW50T2YocGFyZW50Tm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGF2ZVJlbmRlcmVyID0gbV9ub2RlLT5yZW5k
ZXJlcigpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUgPSBwYXJlbnROb2RlOwogICAgICAg
ICAgICAgICAgICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwotICAgICAgICAgICAgICAg
ICAgICBwYXJlbnROb2RlID0gbV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAg
ICAgICAgICAgIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVSZW5kZXJlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4aXROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9k
ZSkgewpAQCAtMTIzNSw3ICsxMjM1LDcgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjphZHZhbmNlKCkKIAogICAgICAgICAgICAgLy8gRXhpdCBhbGwgb3RoZXIgY29udGFp
bmVycy4KICAgICAgICAgICAgIHdoaWxlICghbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgIGlmICghYWR2YW5jZVJlc3BlY3RpbmdSYW5nZShtX25vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKSkpCisgICAgICAgICAgICAgICAgaWYgKCFhZHZhbmNlUmVzcGVjdGluZ1Jh
bmdlKG1fbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAg
ICAgICAgICAgICAgICBleGl0Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCmluZGV4IDIxMThmYjYuLjA2YTBhMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFtZSogZnJhbWUp
CiAgICAgQVNTRVJUKGluRG9jdW1lbnQoKSk7CiAgICAgbV9jb250ZW50RnJhbWUgPSBmcmFtZTsK
IAotICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhp
czsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAg
bm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCgpOwogfQogCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSgpCiAK
ICAgICBtX2NvbnRlbnRGcmFtZSA9IDA7CiAKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUg
PSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgIGZvciAo
Q29udGFpbmVyTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIG5vZGUtPmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1l
Q291bnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgKaW5kZXggZDA3ZWNlMC4uZDM0N2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIGNhbkxvYWRGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyKQogICAgIHsK
LSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gb3duZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBub2RlID0gb3duZXI7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgICAgIGlm
IChkaXNhYmxlZFN1YnRyZWVSb290cygpLmNvbnRhaW5zKG5vZGUpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAKaW5kZXggYTgxZjNiZC4uMTEzMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBFbGVtZW50KiBIVE1MU3R5
bGVFbGVtZW50OjpzY29waW5nRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFRoaXMgcHJv
YmFibHkgbmVlZHMgdG8gYmUgcmVmaW5lZCBmb3Igc2NvcGVkIHN0eWxlc2hlZXRzIHdpdGhpbiBz
aGFkb3cgRE9NLgogICAgIC8vIEFzIHdyaXR0ZW4sIHN1Y2ggYSBzdHlsZXNoZWV0IGNvdWxkIHN0
eWxlIHRoZSBob3N0IGVsZW1lbnQsIGFzIHdlbGwgYXMgY2hpbGRyZW4gb2YgdGhlIGhvc3QuCiAg
ICAgLy8gT1RPSCwgdGhpcyBwYXZlcyB0aGUgd2F5IGZvciBhIDpib3VuZC1lbGVtZW50IGltcGxl
bWVudGF0aW9uLgotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9ySG9zdCA9IHBhcmVudE9ySG9z
dE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudE9ySG9zdCB8fCAhcGFyZW50T3JIb3N0LT5pc0VsZW1l
bnROb2RlKCkpCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFkb3dIb3N0ID0gcGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpOworICAgIGlmICghcGFyZW50T3JTaGFkb3dIb3N0IHx8ICFwYXJl
bnRPclNoYWRvd0hvc3QtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gdG9FbGVtZW50KHBhcmVudE9ySG9zdCk7CisgICAgcmV0dXJuIHRvRWxlbWVudChw
YXJlbnRPclNoYWRvd0hvc3QpOwogfQogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5k
ZXggNTdiMWI3OS4uMjI1MTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3Bw
CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50KiBkZXNj
ZW5kZW50VmlkZW9FbGVtZW50KE5vZGUqIG5vZGUpCiBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0Vs
ZW1lbnQqIGFuY2VzdG9yVmlkZW9FbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgd2hpbGUgKG5v
ZGUgJiYgIW5vZGUtPmhhc1RhZ05hbWUodmlkZW9UYWcpKQotICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihu
b2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDYzYjQ3ZDUuLjFmYTVjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExp
c3RlbmVySW5mbz4mCiAgICAgLy8gUHVzaCB0aGlzIG5vZGUgYXMgdGhlIGZpcnMgZWxlbWVudC4K
ICAgICBhbmNlc3RvcnMuYXBwZW5kKG5vZGUpOwogICAgIGlmIChpbmNsdWRlQW5jZXN0b3JzKSB7
Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPckhvc3ROb2Rl
KCkpCisgICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKGFuY2VzdG9y
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxZTEyMTRh
Li5kY2UwMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMjY4LDcg
KzIyNjgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gT25seSBjaGFu
Z2UgdGhlIGZvY3VzIHdoZW4gY2xpY2tpbmcgc2Nyb2xsYmFycyBpZiBpdCBjYW4gdHJhbnNmZXJl
ZCB0byBhIG1vdXNlIGZvY3VzYWJsZSBub2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwCmluZGV4IDFkZTAyMjAuLmYyODE4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoQWRqdXN0bWVudC5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJn
ZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRy
eUxpcwogICAgICAgICBOb2RlKiBjb25zdCBub2RlID0gaW50ZXJzZWN0ZWROb2Rlcy5pdGVtKGkp
OwogICAgICAgICBWZWN0b3I8Tm9kZSo+IHZpc2l0ZWROb2RlczsKICAgICAgICAgTm9kZSogcmVz
cG9uZGluZ05vZGUgPSAwOwotICAgICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsg
dmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSkgeworICAgICAgICBmb3IgKE5vZGUqIHZpc2l0ZWROb2RlID0gbm9kZTsgdmlzaXRlZE5vZGU7
IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIGEgcmVzdWx0IGZvciBhIGNv
bW1vbiBhbmNlc3RvciBmcm9tIGFub3RoZXIgY2FuZGlkYXRlLgogICAgICAgICAgICAgcmVzcG9u
ZGluZ05vZGUgPSByZXNwb25kZXJNYXAuZ2V0KHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgIGlm
IChyZXNwb25kaW5nTm9kZSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJn
ZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRy
eUxpcwogICAgICAgICAgICAgaWYgKG5vZGVGaWx0ZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAv
LyBDb250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUg
cmVzcG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCi0gICAgICAgICAgICAgICAgZm9y
ICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWRO
b2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5v
ZGUqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQo
dmlzaXRlZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODEsNyArMjgxLDcgQEAg
dm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2Rl
cywgU3VidGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBp
ZiAoY2FuZGlkYXRlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICBOb2RlKiBy
ZXBsYWNlbWVudCA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGNhbmRp
ZGF0ZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gY2Fu
ZGlkYXRlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgICAgICB3aGlsZSAocGFy
ZW50ICYmIHBhcmVudC0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50ID0gcGFyZW50OwogICAgICAgICAgICAgICAgIGlmIChlZGl0YWJsZUFuY2VzdG9y
cy5jb250YWlucyhyZXBsYWNlbWVudCkpIHsKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIGNvbXBp
bGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJn
ZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgZWRpdGFibGVBbmNlc3RvcnMuYWRkKHJlcGxhY2VtZW50KTsK
LSAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAg
ICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHJlcGxhY2VtZW50OwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXgg
YjViZmQ4My4uZWFjYmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcApAQCAtMjY4LDE0ICsyNjgsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRUb05v
blNoYWRvd0FuY2VzdG9yKCkKIHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0SW5uZXJOb2RlKE5vZGUq
IG4pCiB7CiAgICAgaWYgKG4gJiYgbi0+aXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG4gPSBu
LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCk7CiAgICAgbV9pbm5lck5vZGUgPSBuOwogfQogICAgIAogdm9pZCBIaXRUZXN0UmVzdWx0
OjpzZXRJbm5lck5vblNoYXJlZE5vZGUoTm9kZSogbikKIHsKICAgICBpZiAobiAmJiBuLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAg
ICAgbiA9IG4tPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVk
Tm9kZSA9IG47CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCBhZGMwNzA4Li5hYjcyNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC02MTEsNyArNjExLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIHN0eWxl
ZCBub2RlIHRoYXQgY2F1c2VkIHRoZSBnZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCiAgICAg
Ly8gVGhpcyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhjZXB0IGZvciByZW5kZXJlcnMgb2YgOmJl
Zm9yZSBhbmQgOmFmdGVyCiAgICAgLy8gcHNldWRvIGVsZW1lbnRzIGZvciB3aGljaCB0aGVpciBw
YXJlbnQgbm9kZSBpcyByZXR1cm5lZC4KLSAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0
IHsgcmV0dXJuIGlzUHNldWRvRWxlbWVudCgpID8gbm9kZSgpLT5wYXJlbnRPckhvc3ROb2RlKCkg
OiBub2RlKCk7IH0KKyAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlz
UHNldWRvRWxlbWVudCgpID8gbm9kZSgpLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgOiBub2Rl
KCk7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+
ZG9jdW1lbnQoKTsgfQogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50
KCktPmZyYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAppbmRleCA3MjM2MmI5Li5hM2I0YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgc3RhdGljIFN0
cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICBFbGVtZW50KiBib2R5ID0gbm9kZS0+
ZG9jdW1lbnQoKS0+Ym9keSgpOwogICAgIE5vZGUqIHBhcmVudDsKICAgICBmb3IgKE5vZGUqIG4g
PSBub2RlOyBuOyBuID0gcGFyZW50KSB7Ci0gICAgICAgIHBhcmVudCA9IG4tPnBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICAgICAgcGFyZW50ID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwog
ICAgICAgICBpZiAobiAhPSBub2RlKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IiBvZiAiKTsKICAgICAgICAgaWYgKHBhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCA4MjM1NjJiLi45
YWM1Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIGdldEVs
ZW1lbnRDVE0oU1ZHRWxlbWVudCogZWxlbWVudCwgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
CiAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudCA9PSBzdG9wQXRFbGVtZW50KQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9ySG9zdE5vZGUo
KTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBiMDU0MzZhLi5hN2Uz
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9v
bCBTVkdFbGVtZW50Ojppc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSBjb25zdAogICAgIC8vIElm
IHdlJ3JlIGxpdmluZyBpbiBhIHNoYWRvdyB0cmVlLCB3ZSdyZSBhIDxzdmc+IGVsZW1lbnQgdGhh
dCBnb3QgY3JlYXRlZCBhcyByZXBsYWNlbWVudAogICAgIC8vIGZvciBhIDxzeW1ib2w+IGVsZW1l
bnQgb3IgYSBjbG9uZWQgPHN2Zz4gZWxlbWVudCBpbiB0aGUgcmVmZXJlbmNlZCB0cmVlLiBJbiB0
aGF0IGNhc2UKICAgICAvLyB3ZSdyZSBhbHdheXMgYW4gaW5uZXIgPHN2Zz4gZWxlbWVudC4KLSAg
ICBpZiAoaXNJblNoYWRvd1RyZWUoKSAmJiBwYXJlbnRPckhvc3RFbGVtZW50KCkgJiYgcGFyZW50
T3JIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKKyAgICBpZiAoaXNJblNoYWRvd1RyZWUo
KSAmJiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxl
bWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
RWxlbWVudCBtYXkgbm90IGJlIGluIHRoZSBkb2N1bWVudCwgcHJldGVuZCB3ZSdyZSBvdXRlcm1v
c3QgZm9yIHZpZXdwb3J0KCksIGdldENUTSgpLCBldGMuCkBAIC0xODcsMTIgKzE4NywxMiBAQCB2
b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIHJvb3RQYXJlbnQpCiAK
IFNWR1NWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6Om93bmVyU1ZHRWxlbWVudCgpIGNvbnN0CiB7Ci0g
ICAgQ29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJO
b2RlKiBuID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIHdoaWxlIChuKSB7CiAgICAg
ICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihuKTsKIAotICAgICAgICBuID0gbi0+cGFy
ZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjAyLDEyICsyMDIsMTIgQEAgU1ZHRWxlbWVu
dCogU1ZHRWxlbWVudDo6dmlld3BvcnRFbGVtZW50KCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIG5lZWRzIHNoYWRvdyB0cmVlIHN1cHBvcnQgLSBhcyBSZW5kZXJTVkdDb250YWluZXIg
dXNlcyB0aGlzIGZ1bmN0aW9uCiAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSAib3ZlcmZsb3ciIHBy
b3BlcnR5LiA8dXNlPiBvbiA8c3ltYm9sPiB3b3VsZG4ndCB3b3JrIG90aGVyd2hpc2UuCi0gICAg
Q29udGFpbmVyTm9kZSogbiA9IHBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBDb250YWluZXJOb2Rl
KiBuID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIHdoaWxlIChuKSB7CiAgICAgICAg
IGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpIHx8IG4tPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmltYWdlVGFnKSB8fCBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKTsKIAotICAgICAg
ICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuID0gbi0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNDQxLDcgKzQ0MSw3IEBA
IHN0YXRpYyBib29sIGhhc0xvYWRMaXN0ZW5lcihFbGVtZW50KiBlbGVtZW50KQogICAgIGlmIChl
bGVtZW50LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBmb3IgKGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPckhv
c3RFbGVtZW50KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVt
ZW50KCkpIHsKKyAgICBmb3IgKGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCkpIHsKICAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZW50cnkgPSBl
bGVtZW50LT5nZXRFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeS5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgaWYgKGVudHJ5W2ldLnVzZUNhcHR1cmUpCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBTVkdF
bGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZl
bnRzKQogICAgIHdoaWxlIChjdXJyZW50VGFyZ2V0ICYmIGN1cnJlbnRUYXJnZXQtPmhhdmVMb2Fk
ZWRSZXF1aXJlZFJlc291cmNlcygpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQ7
CiAgICAgICAgIGlmIChzZW5kUGFyZW50TG9hZEV2ZW50cykKLSAgICAgICAgICAgIHBhcmVudCA9
IGN1cnJlbnRUYXJnZXQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsgLy8gc2F2ZSB0aGUgbmV4dCBw
YXJlbnQgdG8gZGlzcGF0Y2ggdG9vIGluY2FzZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgY2hhbmdl
cyB0aGUgdHJlZQorICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudFRhcmdldC0+cGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCgpOyAvLyBzYXZlIHRoZSBuZXh0IHBhcmVudCB0byBkaXNwYXRjaCB0
b28gaW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFuZ2VzIHRoZSB0cmVlCiAgICAgICAg
IGlmIChoYXNMb2FkTGlzdGVuZXIoY3VycmVudFRhcmdldC5nZXQoKSkpCiAgICAgICAgICAgICBj
dXJyZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxv
YWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSAocGFyZW50
ICYmIHBhcmVudC0+aXNTVkdFbGVtZW50KCkpID8gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdFbGVt
ZW50PihwYXJlbnQpIDogUmVmUHRyPFNWR0VsZW1lbnQ+KCk7CkBAIC01ODUsNyArNTg1LDcgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJl
cigpCiAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCktPnN0eWxlRm9y
RWxlbWVudCh0aGlzKTsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IDA7Ci0gICAgaWYgKEVs
ZW1lbnQqIHBhcmVudCA9IHBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGlmIChFbGVtZW50
KiBwYXJlbnQgPSBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBz
dHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIH0KQEAgLTYxNyw3ICs2MTcsNyBAQCBSZW5k
ZXJTdHlsZSogU1ZHRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKQogICAgICAgICByZXR1cm4gRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKTsKIAogICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDA7Ci0g
ICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGlm
IChFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBwYXJlbnRTdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCBjZTE2MjVhLi44OTNmNmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgflNWR0VsZW1lbnRJbnN0YW5jZSgpOwogCi0gICAgdm9pZCBz
ZXRQYXJlbnRPckhvc3ROb2RlKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIHsgbV9wYXJl
bnRJbnN0YW5jZSA9IGluc3RhbmNlOyB9CisgICAgdm9pZCBzZXRQYXJlbnRPclNoYWRvd0hvc3RO
b2RlKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIHsgbV9wYXJlbnRJbnN0YW5jZSA9IGlu
c3RhbmNlOyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggNDFhMjJhYS4uZmFkMDE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xNTMsNyArMTUzLDcg
QEAgYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGUKICAgICAvLyAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3Mjk3KQogICAgIC8vIE5vdGUgdGhhdCB3ZSBjdXJyZW50bHkg
ZG8gbm90IHN1cHBvcnQgZm9yZWlnbk9iamVjdCBpbnN0YW50aWF0aW9uIHZpYSA8dXNlPiwgaGVu
Y2UgaXQgaXMgc2FmZQogICAgIC8vIHRvIHVzZSBwYXJlbnRFbGVtZW50KCkgaGVyZS4gSWYgdGhh
dCBjaGFuZ2VzLCB0aGlzIG1ldGhvZCBzaG91bGQgYmUgdXBkYXRlZCB0byB1c2UKLSAgICAvLyBw
YXJlbnRPckhvc3RFbGVtZW50KCkgaW5zdGVhZC4KKyAgICAvLyBwYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCkgaW5zdGVhZC4KICAgICBFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudEVsZW1lbnQo
KTsKICAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpKSB7CiAg
ICAgICAgIGlmIChhbmNlc3Rvci0+cmVuZGVyZXIoKSAmJiBhbmNlc3Rvci0+cmVuZGVyZXIoKS0+
aXNTVkdIaWRkZW5Db250YWluZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCmluZGV4
IDFiZjEzMWIuLjE2MDMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIGJvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKQogewogICAgIC8vIFVubGlrZSBTVkdTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKCksIHdlIHN0aWxsIGNyZWF0ZSByZW5kZXJlcnMsIGV2ZW4gaWYKICAg
ICAvLyBkaXNwbGF5IGlzIHNldCB0byAnbm9uZScgLSB3aGljaCBpcyBzcGVjaWFsIHRvIFNWRyA8
Zz4gY29udGFpbmVyIGVsZW1lbnRzLgotICAgIHJldHVybiBwYXJlbnRPckhvc3RFbGVtZW50KCkg
JiYgcGFyZW50T3JIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKTsKKyAgICByZXR1cm4gcGFy
ZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpICYmIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKS0+
aXNTVkdFbGVtZW50KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMb2NhdGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKaW5k
ZXggNDE1ZjcwYy4uZDRmMzEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xv
Y2F0YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydEVsZW1lbnQoTm9kZSogbm9kZSkK
IFNWR0VsZW1lbnQqIFNWR0xvY2F0YWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBT
VkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBmb3IgKEVs
ZW1lbnQqIGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCk7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVs
ZW1lbnQqIGN1cnJlbnQgPSBlbGVtZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsK
ICAgICAgICAgaWYgKGlzVmlld3BvcnRFbGVtZW50KGN1cnJlbnQpKQogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjdXJyZW50KTsKICAgICB9CkBAIC01NSw3ICs1
NSw3IEBAIFNWR0VsZW1lbnQqIFNWR0xvY2F0YWJsZTo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQo
Y29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAg
U1ZHRWxlbWVudCogZmFydGhlc3QgPSAwOwotICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVs
ZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQt
PnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAoRWxlbWVudCogY3VycmVudCA9IGVs
ZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1
cnJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoaXNWaWV3
cG9ydEVsZW1lbnQoY3VycmVudCkpCiAgICAgICAgICAgICBmYXJ0aGVzdCA9IHN0YXRpY19jYXN0
PFNWR0VsZW1lbnQqPihjdXJyZW50KTsKICAgICB9CkBAIC04NCw3ICs4NCw3IEBAIEFmZmluZVRy
YW5zZm9ybSBTVkdMb2NhdGFibGU6OmNvbXB1dGVDVE0oU1ZHRWxlbWVudCogZWxlbWVudCwgQ1RN
U2NvcGUgbW9kZSwgU3R5CiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKIAogICAgIFNWR0VsZW1l
bnQqIHN0b3BBdEVsZW1lbnQgPSBtb2RlID09IE5lYXJlc3RWaWV3cG9ydFNjb3BlID8gbmVhcmVz
dFZpZXdwb3J0RWxlbWVudChlbGVtZW50KSA6IDA7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50
RWxlbWVudCA9IGVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJl
bnRFbGVtZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGN1
cnJlbnRFbGVtZW50ID0gZWxlbWVudDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0g
Y3VycmVudEVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBp
ZiAoIWN1cnJlbnRFbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTM0Zjg2NC4uYmVl
NGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtMTIyLDcg
KzEyMiw3IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICAvLyBTcGVjOiBTVkcgYWxsb3dzIGlu
Y2x1c2lvbiBvZiBlbGVtZW50cyBmcm9tIGZvcmVpZ24gbmFtZXNwYWNlcyBhbnl3aGVyZQogICAg
IC8vIHdpdGggdGhlIFNWRyBjb250ZW50LiBJbiBnZW5lcmFsLCB0aGUgU1ZHIHVzZXIgYWdlbnQg
d2lsbCBpbmNsdWRlIHRoZSB1bmtub3duCiAgICAgLy8gZWxlbWVudHMgaW4gdGhlIERPTSBidXQg
d2lsbCBvdGhlcndpc2UgaWdub3JlIHVua25vd24gZWxlbWVudHMuIAotICAgIGlmICghcGFyZW50
T3JIb3N0RWxlbWVudCgpIHx8IHBhcmVudE9ySG9zdEVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkp
CisgICAgaWYgKCFwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgfHwgcGFyZW50T3JTaGFkb3dI
b3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFN0eWxlZEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjkyZTdhYy4uYTNmNTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwIEBACisy
MDEzLTAxLTMwICBDaGFuZ2h1biBLYW5nICA8dGVtb29jaGluQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIFJlbmFtZSBmcm9tIHBhcmVudE9ySG9zdCogdG8gcGFyZW50T3JTaGFkb3dIb3N0KiBp
biBOb2RlLmguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDgzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQorCiAyMDEzLTAx
LTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjY5NTgyNz4gUFBUOiBNYWtlIGxvYWRpbmcgZmlsZSBVUkxzIHdvcmsgd2l0
aCBhIHNhbmRib3hlZCBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGFlZGExMjAuLmU2MTk1MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3NzQsNyArMTc3
NCw3IEBAIHZvaWQgV2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZhdGlvbihjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmCiAjZW5kaWYKICAgICAgICAgLy8gRmluZCB0
aGUgbm9kZSB0byBoaWdobGlnaHQuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBub2RlIHJl
c3BvbmRpbmcgdGhlIHRhcCBnZXN0dXJlLCBiZWNhdXNlIG1hbnkKICAgICAgICAgLy8gcGFnZXMg
aGFzIGEgZ2xvYmFsIGNsaWNrIGhhbmRsZXIgYW5kIHdlIGRvIG5vdCB3YW50IHRvIGhpZ2hsaWdo
dCB0aGUgYm9keS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gYWRqdXN0ZWROb2RlOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSog
bm9kZSA9IGFkanVzdGVkTm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgfHwgbm9k
ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0tIAox
LjcuOS41Cgo=
</data>
<flag name="commit-queue"
          id="204744"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185899</attachid>
            <date>2013-01-31 16:58:43 -0800</date>
            <delta_ts>2013-01-31 19:18:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Rename-from-parentOrHost-to-parentOrShadowHost-in-No.patch</filename>
            <type>text/plain</type>
            <size>52965</size>
            <attacher name="Changhun Kang">chkang514</attacher>
            
              <data encoding="base64">RnJvbSBjNjNmMjYzN2RhNmNlZTEzMTMxMWJjMzAwNTZhZmJmNWVlZmVkZDk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFuZ2h1biBLYW5nIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjkgSmFuIDIwMTMgMjE6NDQ6MzMgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBSZW5hbWUgZnJvbSBwYXJlbnRPckhvc3QqIHRvIHBhcmVudE9yU2hhZG93SG9zdCogaW4gTm9k
ZS5oLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODMwOAoKUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgoKTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICA5ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaCAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0ND
b250cm9sbGVyLmNwcCAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
RmlsdGVyLmNwcCAgICAgICAgICAgICAgfCAgIDEwICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCAgICB8ICAgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCAgICAgICAgICAgICAgIHwgICAx
NCArKystLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oICAgICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5oICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAgICAg
ICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmggICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyICsrKysr
KysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjMgKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwICAgICAgICAgIHwgICAgMiArLQogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwICAgICAgICAgICAgfCAgIDEyICsrKy0t
LQogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwICAgICAgfCAg
ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oICAgICAg
ICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgICAg
ICAgICAgIHwgICAgNiArLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAg
ICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVG91
Y2hBZGp1c3RtZW50LmNwcCAgICAgICAgICAgIHwgICAgOCArKy0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwICAgICAgfCAgICAyICstCiAu
Li4vV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCB8ICAgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAxOCArKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCAg
ICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcCAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQu
Y3BwICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwICAgICAgICAgICAgICAgIHwgICAgNiArLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsrKysKIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwgICAgMiArLQogNDMg
ZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMTUxY2Y5ZC4uZmMwMjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEzLTAxLTMwICBDaGFuZ2h1biBLYW5nICA8dGVtb29jaGluQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIFJlbmFtZSBmcm9tIHBhcmVudE9ySG9zdCogdG8gcGFyZW50T3JTaGFkb3dIb3N0KiBp
biBOb2RlLmguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDgzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKIDIwMTMtMDEtMzAgIEpv
ZSBNYXNvbiAgPGptYXNvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBOZXZlciBz
dG9yZSBlbXB0eSBjcmVkZW50aWFscyBpbiBOZXR3b3JrSm9iOjpzdG9yZUNyZWRlbnRpYWxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDZlYjk2ZDcuLmYz
YjhlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0y
MTgsOCArMjE4LDggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYg
KG5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBub2RlLT5kb2N1bWVudCgp
OwogCi0gICAgICAgIHdoaWxlIChub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICB3aGlsZSAobm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggNjJjZDJk
My4uMmVjOTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIE5vZGUqIFY4R0NDb250cm9sbGVyOjpvcGFxdWVS
b290Rm9yR0MoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZSA9IG93bmVyRWxlbWVudDsKICAgICB9
CiAKLSAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQor
ICAgIHdoaWxlIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkp
CiAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAKICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JGaWx0ZXIuY3BwCmluZGV4IDYxZjlkZmUuLmVhZjg4NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtNTMsOCArNTMsOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIFZlY3Rvcgogdm9pZCBTZWxlY3RvckZpbHRlcjo6cHVzaFBhcmVudFN0YWNrRnJhbWUoRWxl
bWVudCogcGFyZW50KQogewogICAgIEFTU0VSVChtX2FuY2VzdG9ySWRlbnRpZmllckZpbHRlcik7
Ci0gICAgQVNTRVJUKG1fcGFyZW50U3RhY2suaXNFbXB0eSgpIHx8IG1fcGFyZW50U3RhY2subGFz
dCgpLmVsZW1lbnQgPT0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50KCkpOwotICAgIEFTU0VS
VCghbV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgIXBhcmVudC0+cGFyZW50T3JIb3N0RWxlbWVu
dCgpKTsKKyAgICBBU1NFUlQobV9wYXJlbnRTdGFjay5pc0VtcHR5KCkgfHwgbV9wYXJlbnRTdGFj
ay5sYXN0KCkuZWxlbWVudCA9PSBwYXJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSk7
CisgICAgQVNTRVJUKCFtX3BhcmVudFN0YWNrLmlzRW1wdHkoKSB8fCAhcGFyZW50LT5wYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KCkpOwogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudFN0
YWNrRnJhbWUocGFyZW50KSk7CiAgICAgUGFyZW50U3RhY2tGcmFtZSYgcGFyZW50RnJhbWUgPSBt
X3BhcmVudFN0YWNrLmxhc3QoKTsKICAgICAvLyBNaXggdGFncywgY2xhc3MgbmFtZXMgYW5kIGlk
cyBpbnRvIHNvbWUgc29ydCBvZiB3ZWlyZCBib3VpbGxhYmFpc3NlLgpAQCAtODcsMTMgKzg3LDEz
IEBAIHZvaWQgU2VsZWN0b3JGaWx0ZXI6OnNldHVwUGFyZW50U3RhY2soRWxlbWVudCogcGFyZW50
KQogICAgIG1fcGFyZW50U3RhY2suc2hyaW5rKDApOwogICAgIG1fYW5jZXN0b3JJZGVudGlmaWVy
RmlsdGVyID0gYWRvcHRQdHIobmV3IEJsb29tRmlsdGVyPGJsb29tRmlsdGVyS2V5Qml0cz4pOwog
ICAgIC8vIEZhc3QgdmVyc2lvbiBpZiBwYXJlbnQgaXMgYSByb290IGVsZW1lbnQ6Ci0gICAgaWYg
KCFwYXJlbnQtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgIGlmICghcGFyZW50LT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgcHVzaFBhcmVudFN0YWNrRnJhbWUocGFyZW50
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBPdGhlcndpc2UgY2xpbWIgdXAgdGhl
IHRyZWUuCiAgICAgVmVjdG9yPEVsZW1lbnQqLCAzMD4gYW5jZXN0b3JzOwotICAgIGZvciAoRWxl
bWVudCogYW5jZXN0b3IgPSBwYXJlbnQ7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5w
YXJlbnRPckhvc3RFbGVtZW50KCkpCisgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVu
dDsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1l
bnQoKSkKICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChhbmNlc3Rvcik7CiAgICAgZm9yIChzaXpl
X3QgbiA9IGFuY2VzdG9ycy5zaXplKCk7IG47IC0tbikKICAgICAgICAgcHVzaFBhcmVudFN0YWNr
RnJhbWUoYW5jZXN0b3JzW24gLSAxXSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTZWxlY3Rv
ckZpbHRlcjo6cHVzaFBhcmVudChFbGVtZW50KiBwYXJlbnQpCiAgICAgQVNTRVJUKG1fYW5jZXN0
b3JJZGVudGlmaWVyRmlsdGVyKTsKICAgICAvLyBXZSBtYXkgZ2V0IGludm9rZWQgZm9yIHNvbWUg
cmFuZG9tIGVsZW1lbnRzIGluIHNvbWUgd2Fja3kgY2FzZXMgZHVyaW5nIHN0eWxlIHJlc29sdmUu
CiAgICAgLy8gUGF1c2UgbWFpbnRhaW5pbmcgdGhlIHN0YWNrIGluIHRoaXMgY2FzZS4KLSAgICBp
ZiAobV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQtPnBhcmVudE9ySG9zdEVs
ZW1lbnQoKSkKKyAgICBpZiAobV9wYXJlbnRTdGFjay5sYXN0KCkuZWxlbWVudCAhPSBwYXJlbnQt
PnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHB1c2hQ
YXJlbnRTdGFja0ZyYW1lKHBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggODg1Mzg1Zi4uYzM1NjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQCiAKIHZvaWQg
U3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQogewotICAg
IGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudHNQYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9ySG9z
dEVsZW1lbnQoKTsKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFy
ZW50LT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7CiAKICAgICAvLyBXZSBhcmUgbm90IGFs
d2F5cyBpbnZva2VkIGNvbnNpc3RlbnRseS4gRm9yIGV4YW1wbGUsIHNjcmlwdCBleGVjdXRpb24g
Y2FuIGNhdXNlIHVzIHRvIGVudGVyCiAgICAgLy8gc3R5bGUgcmVjYWxjIGluIHRoZSBtaWRkbGUg
b2YgdHJlZSBidWlsZGluZy4gV2UgbWF5IGFsc28gYmUgaW52b2tlZCBmcm9tIHNvbWV3aGVyZSB3
aXRoaW4gdGhlIHRyZWUuCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpw
dXNoUGFyZW50RWxlbWVudChFbGVtZW50KiBwYXJlbnQpCiAKICAgICAvLyBOb3RlOiBXZSBtdXN0
bid0IHNraXAgU2hhZG93Um9vdCBub2RlcyBmb3IgdGhlIHNjb3BlIHN0YWNrLgogICAgIGlmICht
X3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cHVzaChwYXJlbnQsIHBh
cmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgbV9zY29wZVJlc29sdmVyLT5wdXNo
KHBhcmVudCwgcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogfQogCiB2b2lkIFN0
eWxlUmVzb2x2ZXI6OnBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCogcGFyZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNhYmU1Li44NDU4ZDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpzZXR1cFN0YWNrKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHBhcmVudCkKIAogICAgIG1fc3RhY2suc2hyaW5rKDApOwogICAgIGludCBhdXRob3JT
dHlsZUJvdW5kc0luZGV4ID0gMDsKLSAgICBmb3IgKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
ID0gcGFyZW50OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7Cisg
ICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsgc2NvcGU7IHNjb3Bl
ID0gc2NvcGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBSdWxlU2V0KiBy
dWxlU2V0ID0gcnVsZVNldEZvcihzY29wZSk7CiAgICAgICAgIGlmIChydWxlU2V0KQogICAgICAg
ICAgICAgbV9zdGFjay5hcHBlbmQoU3RhY2tGcmFtZShzY29wZSwgYXV0aG9yU3R5bGVCb3VuZHNJ
bmRleCwgcnVsZVNldCkpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29s
dmVyOjpwb3AoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpCiAgICAgICAgICAgICBtX3N0YWNr
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhdG9T
aGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKICAgICAgICAgICAgIC0tbV9z
dGFja1BhcmVudEJvdW5kc0luZGV4OwotICAgICAgICBtX3N0YWNrUGFyZW50ID0gc2NvcGUtPnBh
cmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRP
clNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggNGY0NjVh
MS4uNWQ5ZWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEF0dHI6
OmNyZWF0ZVRleHRDaGlsZCgpCiAKICAgICAgICAgLy8gVGhpcyBkb2VzIGV2ZXJ5dGhpbmcgYXBw
ZW5kQ2hpbGQoKSB3b3VsZCBkbyBpbiB0aGlzIHNpdHVhdGlvbiAoYXNzdW1pbmcgbV9pZ25vcmVD
aGlsZHJlbkNoYW5nZWQgd2FzIHNldCksCiAgICAgICAgIC8vIGJ1dCBtdWNoIG1vcmUgZWZmaWNp
ZW50bHkuCi0gICAgICAgIHRleHROb2RlLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOworICAg
ICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSh0aGlzKTsKICAgICAgICAg
c2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNldExhc3RDaGlsZCh0ZXh0
Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcAppbmRleCBhYjU4ZDYxLi4xNDc2MmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMjI2LDcgKzIyNiw3
IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQoKQogTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJl
bnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIGlmIChub2RlLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsK
KyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIGlm
ICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkgJiYgbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKICAg
ICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA1NjRkOWQyLi4yY2JkYzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBDb250YWlu
ZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVm
Q2hpbGQsIEV4Y2UKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0
aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVj
dCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBw
YXJlbnRPckhvc3ROb2RlKCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29tbW9uKE5v
ZGUqIG5leHRDaGlsZCwgTm9kZSogbmV3Q2hpbGQpCiAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hp
bGQgPT0gbmV4dENoaWxkKTsKICAgICAgICAgbV9maXJzdENoaWxkID0gbmV3Q2hpbGQ7CiAgICAg
fQotICAgIG5ld0NoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOworICAgIG5ld0NoaWxk
LT5zZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKHRoaXMpOwogICAgIG5ld0NoaWxkLT5zZXRQcmV2
aW91c1NpYmxpbmcocHJldik7CiAgICAgbmV3Q2hpbGQtPnNldE5leHRTaWJsaW5nKG5leHRDaGls
ZCk7CiB9CkBAIC0zNTIsNyArMzUyLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKIHsKICAg
ICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJZiBp
dCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0
aW9uIGV2ZW50cy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJlbnRPckhvc3ROb2RlKCkp
OworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAK
ICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdCh0aGlzKTsKIApAQCAtNDc0LDcgKzQ3NCw3IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmci
LgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9m
IHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgotICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVu
dE9ySG9zdE5vZGUoKSk7CisgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KHRoaXMpOwogCkBAIC01NTEs
NyArNTUxLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZp
b3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2wKIAogICAgIG9sZENoaWxkLT5zZXRQ
cmV2aW91c1NpYmxpbmcoMCk7CiAgICAgb2xkQ2hpbGQtPnNldE5leHRTaWJsaW5nKDApOwotICAg
IG9sZENoaWxkLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgIG9sZENoaWxkLT5zZXRQYXJl
bnRPclNoYWRvd0hvc3ROb2RlKDApOwogCiAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChv
bGRDaGlsZCk7CiB9CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1v
dmVDaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgLy8gdGhpcyBkaXNjcmVwYW5jeSBiZXR3ZWVu
IHJlbW92ZUNoaWxkKCkgYW5kIGl0cyBvcHRpbWl6ZWQgdmVyc2lvbiByZW1vdmVDaGlsZHJlbigp
LgogICAgICAgICAgICAgICAgIG4tPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICAgICAgICAg
ICAgICBuLT5zZXROZXh0U2libGluZygwKTsKLSAgICAgICAgICAgICAgICBuLT5zZXRQYXJlbnRP
ckhvc3ROb2RlKDApOworICAgICAgICAgICAgICAgIG4tPnNldFBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoMCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChuLmdldCgp
KTsKIAogICAgICAgICAgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7CkBAIC02NDUsNyArNjQ1
LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KIAogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBu
b2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRl
ZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgotICAgIEFTU0VS
VChyZWZDb3VudCgpIHx8IHBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgQVNTRVJUKHJlZkNvdW50
KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAogICAgIGVjID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggMTMyMWRmZC4uOWI3OTgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNjYsNyArMjY2LDcgQEAgaW5saW5lIGJvb2wgTm9kZTo6
bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgY29uc3QKIHsKICAgICBpZiAoZ2V0RmxhZyhOZWVkc1No
YWRvd1RyZWVXYWxrZXJGbGFnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICByZXR1cm4gcGFyZW50ICYmIHBh
cmVudC0+Z2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCA2OGU3MjhmLi5hMjVj
YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApA
QCAtMTA4LDcgKzEwOCw3IEBAIGlubGluZSB2b2lkIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNv
bnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQogdGVtcGxhdGU8Y2xhc3Mg
R2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogaW5saW5lIHZvaWQgYXBw
ZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFp
bmVyKiBjb250YWluZXIpCiB7Ci0gICAgY2hpbGQtPnNldFBhcmVudE9ySG9zdE5vZGUoY29udGFp
bmVyKTsKKyAgICBjaGlsZC0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShjb250YWluZXIpOwog
CiAgICAgR2VuZXJpY05vZGUqIGxhc3RDaGlsZCA9IGNvbnRhaW5lci0+bGFzdENoaWxkKCk7CiAg
ICAgaWYgKGxhc3RDaGlsZCkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBQcml2YXRl
IHsKICAgICAgICAgICAgIG5leHQgPSBuLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgbi0+
c2V0UHJldmlvdXNTaWJsaW5nKDApOwogICAgICAgICAgICAgbi0+c2V0TmV4dFNpYmxpbmcoMCk7
Ci0gICAgICAgICAgICBuLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICAgICAgbi0+
c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgwKTsKIAogICAgICAgICAgICAgaWYgKCFuLT5yZWZD
b3VudCgpKSB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWM4
ZTk4Ni4uOTNiNmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01ODQ3LDcgKzU4NDcs
NyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIC8vIElmIGl0IGhhc24ndCwgd2UgZG8g
bm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCiAgICAgTm9kZSogbmV3SG92ZXJOb2RlID0gaW5uZXJF
bGVtZW50SW5Eb2N1bWVudDsKICAgICB3aGlsZSAobmV3SG92ZXJOb2RlICYmICFuZXdIb3Zlck5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIG5ld0hvdmVyTm9kZSA9IG5ld0hvdmVyTm9kZS0+cGFy
ZW50T3JIb3N0Tm9kZSgpOworICAgICAgICBuZXdIb3Zlck5vZGUgPSBuZXdIb3Zlck5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgY3VycmVudCBob3Zl
ciBub2RlLgogICAgIHNldEhvdmVyTm9kZShuZXdIb3Zlck5vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCA4NThlNDU5Li5hNjQ4YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU5MCw3
ICsxNTkwLDcgQEAgaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogCiBp
bmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlw
ZSkKICAgICA6IG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX3BhcmVudE9ySG9zdE5vZGUoMCkK
KyAgICAsIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgwKQogICAgICwgbV90cmVlU2NvcGUoZG9j
dW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCAzOTcxMzc3Li45ZGIyZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC0yNDYwLDcgKzI0NjAsNyBAQCBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgRWxlbWVudDo6c3Bl
bGxjaGVja0F0dHJpYnV0ZVN0YXRlKCkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQg
PSB0aGlzOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgp
KSB7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxlbWVudDsgZWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBz
d2l0Y2ggKGVsZW1lbnQtPnNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpKSB7CiAgICAgICAgIGNh
c2UgU3BlbGxjaGVja0F0dHJpYnV0ZVRydWU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IDIzYzU2OWMuLmY2NGRkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApA
QCAtODU5LDcgKzg1OSw3IEBAIGlubGluZSBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IE5vZGU6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlCiAgICAgQVNTRVJUKGlu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwogICAgIGlm
IChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQogICAgICAgICBzZXRGbGFnKEluRG9jdW1l
bnRGbGFnKTsKLSAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKQor
ICAgIGlmIChwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCktPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAg
ICAgIHNldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9u
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBkY2Y2YjNhLi4xMGI5
YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNTYsNyArMjU2LDcg
QEAgaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZWxlYXNlUHNldWRvRWxlbWVudChQc2V1
ZG9FbGVtZW50KiBlbGVtZW50KQogICAgIEFTU0VSVCghZWxlbWVudC0+bmV4dFNpYmxpbmcoKSk7
CiAgICAgQVNTRVJUKCFlbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSk7CiAKLSAgICBlbGVtZW50
LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgIGVsZW1lbnQtPnNldFBhcmVudE9yU2hhZG93
SG9zdE5vZGUoMCk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRDb21w
dXRlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCBmY2IzN2Uz
Li5mMzAyNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCog
c2hhZG93SG9zdCwgU2hhZG93Um9vdDo6U2hhZG93CiB7CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+
IHNoYWRvd1Jvb3QgPSBTaGFkb3dSb290OjpjcmVhdGUoc2hhZG93SG9zdC0+ZG9jdW1lbnQoKSwg
dHlwZSk7CiAKLSAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRPckhvc3ROb2RlKHNoYWRvd0hvc3Qp
OworICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoc2hhZG93SG9zdCk7
CiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29w
ZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgbV9k
aXN0cmlidXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKQEAgLTY5LDcg
KzY5LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAg
ICAgICAgICBvbGRSb290LT5kZXRhY2goKTsKIAogICAgICAgICBtX3NoYWRvd1Jvb3RzLnJlbW92
ZUhlYWQoKTsKLSAgICAgICAgb2xkUm9vdC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAg
ICAgb2xkUm9vdC0+c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgwKTsKICAgICAgICAgb2xkUm9v
dC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPmRvY3VtZW50KCkpOwogICAgICAgICBv
bGRSb290LT5zZXRQcmV2KDApOwogICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDQxMTY5MDEuLjE4ZTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTgxMCw3
ICs4MTAsNyBAQCBpbmxpbmUgdm9pZCBOb2RlOjpzZXRTdHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5
cGUgY2hhbmdlVHlwZSkKIAogaW5saW5lIHZvaWQgTm9kZTo6bWFya0FuY2VzdG9yc1dpdGhDaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKQogewotICAgIGZvciAoQ29udGFpbmVyTm9kZSogcCA9IHBhcmVu
dE9ySG9zdE5vZGUoKTsgcCAmJiAhcC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7IHAgPSBwLT5w
YXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9yIChDb250YWluZXJOb2RlKiBwID0gcGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAt
PnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgcC0+c2V0Q2hpbGROZWVkc1N0eWxl
UmVjYWxjKCk7CiAKICAgICBpZiAoZG9jdW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkp
CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBib29sIE5vZGU6OmNvbnRhaW5zKGNvbnN0IE5vZGUqIG5v
ZGUpIGNvbnN0CiAKIGJvb2wgTm9kZTo6Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKSkgeworICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChub2RlID09IHRoaXMpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBib29sIE5vZGU6OmNv
bnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAg
ICAgIGlmIChub2RlLT5pc0RvY3VtZW50RnJhZ21lbnQoKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBE
b2N1bWVudEZyYWdtZW50Kj4obm9kZSktPmlzVGVtcGxhdGVDb250ZW50KCkpCiAgICAgICAgICAg
ICBub2RlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVu
dCo+KG5vZGUpLT5ob3N0KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQpAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcmlu
Z0FuZFN0eWxlKCkKIAogUmVuZGVyU3R5bGUqIE5vZGU6OnZpcnR1YWxDb21wdXRlZFN0eWxlKFBz
ZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiB7Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9z
dE5vZGUoKSA/IHBhcmVudE9ySG9zdE5vZGUoKS0+Y29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKSA6IDA7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSA/IHBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKS0+Y29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyKSA6IDA7CiB9CiAKIGludCBOb2RlOjptYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdApAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgYm9vbCBOb2RlOjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAg
ICAgICAgIGlmIChzdHlsZS0+dXNlckRyYWcoKSA9PSBEUkFHX0VMRU1FTlQgJiYgc3R5bGUtPnVz
ZXJTZWxlY3QoKSA9PSBTRUxFQ1RfTk9ORSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKSA/IHBhcmVudE9ySG9zdE5vZGUoKS0+
Y2FuU3RhcnRTZWxlY3Rpb24oKSA6IHRydWU7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSA/IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSA6
IHRydWU7CiB9CiAKIEVsZW1lbnQqIE5vZGU6OnNoYWRvd0hvc3QoKSBjb25zdApAQCAtMTI2NCw5
ICsxMjY0LDkgQEAgQ29udGFpbmVyTm9kZSogTm9kZTo6bm9uU2hhZG93Qm91bmRhcnlQYXJlbnRO
b2RlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50ICYmICFwYXJlbnQtPmlzU2hhZG93Um9vdCgp
ID8gcGFyZW50IDogMDsKIH0KIAotRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgp
IGNvbnN0CitFbGVtZW50KiBOb2RlOjpwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgY29uc3QK
IHsKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhvc3ROb2RlKCk7CisgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIGlm
ICghcGFyZW50KQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTkwMSw5ICsxOTAxLDkgQEAgdm9p
ZCBOb2RlOjpzaG93Tm9kZVBhdGhGb3JUaGlzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8Y29uc3Qg
Tm9kZSosIDE2PiBjaGFpbjsKICAgICBjb25zdCBOb2RlKiBub2RlID0gdGhpczsKLSAgICB3aGls
ZSAobm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgd2hpbGUgKG5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBjaGFpbi5hcHBlbmQobm9kZSk7Ci0gICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSBjaGFpbi5zaXplKCk7IGluZGV4ID4gMDsgLS1pbmRleCkgewogICAgICAgICBjb25zdCBOb2Rl
KiBub2RlID0gY2hhaW5baW5kZXggLSAxXTsKQEAgLTE5NTgsNyArMTk1OCw3IEBAIHN0YXRpYyB2
b2lkIHRyYXZlcnNlVHJlZUFuZE1hcmsoY29uc3QgU3RyaW5nJiBiYXNlSW5kZW50LCBjb25zdCBO
b2RlKiByb290Tm9kZSwKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGluZGVudDsKICAgICAgICAg
aW5kZW50LmFwcGVuZChiYXNlSW5kZW50KTsKLSAgICAgICAgZm9yIChjb25zdCBOb2RlKiB0bXBO
b2RlID0gbm9kZTsgdG1wTm9kZSAmJiB0bXBOb2RlICE9IHJvb3ROb2RlOyB0bXBOb2RlID0gdG1w
Tm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICBmb3IgKGNvbnN0IE5vZGUqIHRtcE5v
ZGUgPSBub2RlOyB0bXBOb2RlICYmIHRtcE5vZGUgIT0gcm9vdE5vZGU7IHRtcE5vZGUgPSB0bXBO
b2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgICAgICBpbmRlbnQuYXBwZW5k
KCdcdCcpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgaW5kZW50LnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG5vZGUtPnNob3dOb2RlKCk7CkBAIC0xOTc1LDggKzE5
NzUsOCBAQCB2b2lkIE5vZGU6OnNob3dUcmVlQW5kTWFyayhjb25zdCBOb2RlKiBtYXJrZWROb2Rl
MSwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBjbwogewogICAgIGNvbnN0IE5vZGUqIHJvb3RO
b2RlOwogICAgIGNvbnN0IE5vZGUqIG5vZGUgPSB0aGlzOwotICAgIHdoaWxlIChub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkgJiYgIW5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCi0gICAgICAgIG5v
ZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgd2hpbGUgKG5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSAmJiAhbm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKKyAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICByb290Tm9kZSA9IG5v
ZGU7CiAKICAgICBTdHJpbmcgc3RhcnRpbmdJbmRlbnQ7CkBAIC0xOTk3LDkgKzE5OTcsOSBAQCB2
b2lkIE5vZGU6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdAogICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudXRmOCgpLmRhdGEoKSwgbGVuZ3Ro
IC0gMSk7CiB9CiAKLXN0YXRpYyBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3RPckZyYW1lT3du
ZXIoY29uc3QgTm9kZSogbm9kZSkKK3N0YXRpYyBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRv
d0hvc3RPckZyYW1lT3duZXIoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIGlmICghcGFyZW50
ICYmIG5vZGUtPmRvY3VtZW50KCkgJiYgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAg
ICAgcGFyZW50ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiAg
ICAgcmV0dXJuIHBhcmVudDsKQEAgLTIwMjcsOCArMjAyNyw4IEBAIHN0YXRpYyB2b2lkIHNob3dT
dWJUcmVlQWNyb3NzRnJhbWUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgTm9kZSogbWFya2VkTm9k
ZSwgY29uCiB2b2lkIE5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3QKIHsK
ICAgICBOb2RlKiByb290Tm9kZSA9IGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpOwotICAgIHdoaWxl
IChwYXJlbnRPckhvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpKQotICAgICAgICByb290Tm9kZSA9
IHBhcmVudE9ySG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSk7CisgICAgd2hpbGUgKHBhcmVudE9y
U2hhZG93SG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSkpCisgICAgICAgIHJvb3ROb2RlID0gcGFy
ZW50T3JTaGFkb3dIb3N0T3JGcmFtZU93bmVyKHJvb3ROb2RlKTsKICAgICBzaG93U3ViVHJlZUFj
cm9zc0ZyYW1lKHJvb3ROb2RlLCB0aGlzLCAiIik7CiB9CiAKQEAgLTIwNjEsNyArMjA2MSw3IEBA
IHZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAogCiBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKQogewot
ICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgIC8vIEZvciBpbWFnZW1hcHMs
IHRoZSBlbmNsb3NpbmcgbGluayBub2RlIGlzIHRoZSBhc3NvY2lhdGVkIGFyZWEgZWxlbWVudCBu
b3QgdGhlIGltYWdlIGl0c2VsZi4KICAgICAgICAgLy8gU28gd2UgZG9uJ3QgbGV0IGltYWdlcyBi
ZSB0aGUgZW5jbG9zaW5nTGlua05vZGUsIGV2ZW4gdGhvdWdoIGlzTGluayBzb21ldGltZXMgcmV0
dXJucyB0cnVlCiAgICAgICAgIC8vIGZvciB0aGVtLgpAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgdm9p
ZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgLy8gVGhp
cyBpcyBuZWVkZWQgZm9yIDxvcHRpb24+IGFuZCA8b3B0Z3JvdXA+IGVsZW1lbnRzIHNvIHRoYXQg
PHNlbGVjdD5zIGdldCBhIHdoZWVsIHNjcm9sbC4KICAgICAgICAgTm9kZSogc3RhcnROb2RlID0g
dGhpczsKICAgICAgICAgd2hpbGUgKHN0YXJ0Tm9kZSAmJiAhc3RhcnROb2RlLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7
CisgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1l
KCkpCkBAIC0yNTgzLDcgKzI1ODMsNyBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpE
T00pOwogICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9wYXJlbnRPckhvc3ROb2RlKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3BhcmVudE9yU2hhZG93SG9zdE5vZGUpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fdHJlZVNjb3BlKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25leHQpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fcHJldmlvdXMpOwpAQCAtMjYyNyw3ICsyNjI3LDcgQEAgdm9pZCBOb2RlOjp1cGRh
dGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCkgY29uc3QKICAgICBp
ZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJl
bnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisg
ICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICBub2RlLT5kZWNyZW1l
bnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKIH0KIApAQCAtMjYzOCw3ICsyNjM4LDcg
QEAgdm9pZCBOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNl
cnRpb24oKSBjb25zdAogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoTm9kZSogbm9kZSA9IHBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPclNoYWRvd0hv
c3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAg
ICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCA5MmZiMmI5Li4wMDk2NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3NSwx
MCArMjc1LDkgQEAgcHVibGljOgogICAgIE5vZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3RO
b2RlKCk7CiAKICAgICAvLyBOb2RlJ3MgcGFyZW50LCBzaGFkb3cgdHJlZSBob3N0LgotICAgIC8v
IEZJWE1FOiBUaGVzZSBtZXRob2RzIHNob3VsZCBiZSByZW5hbWVkIHBhcmVudE9yU2hhZG93SG9z
dCoKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkgY29uc3Q7Ci0gICAgRWxl
bWVudCogcGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UGFyZW50T3JI
b3N0Tm9kZShDb250YWluZXJOb2RlKik7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpIGNvbnN0OworICAgIEVsZW1lbnQqIHBhcmVudE9yU2hhZG93SG9zdEVsZW1l
bnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoQ29udGFpbmVy
Tm9kZSopOwogICAgIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcigpIGNvbnN0OwogCiAgICAgLy8gVXNl
IHdoZW4gaXQncyBndWFyYW50ZWVkIHRvIHRoYXQgc2hhZG93SG9zdCBpcyAwLgpAQCAtNzc4LDcg
Kzc3Nyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8Tm9kZT47CiAK
ICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0gICAgYm9vbCBoYXNUcmVlU2hhcmVkUGFyZW50
KCkgY29uc3QgeyByZXR1cm4gISFwYXJlbnRPckhvc3ROb2RlKCk7IH0KKyAgICBib29sIGhhc1Ry
ZWVTaGFyZWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiAhIXBhcmVudE9yU2hhZG93SG9zdE5vZGUo
KTsgfQogCiAgICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVkaXRhYmxl
IH07CiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVMZXZlbCwgVXNlclNlbGVj
dEFsbFRyZWF0bWVudCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSBjb25zdDsK
QEAgLTgxMiw3ICs4MTEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbio+KiB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKIAog
ICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7Ci0gICAgQ29udGFpbmVyTm9kZSogbV9w
YXJlbnRPckhvc3ROb2RlOworICAgIENvbnRhaW5lck5vZGUqIG1fcGFyZW50T3JTaGFkb3dIb3N0
Tm9kZTsKICAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7
CiAgICAgTm9kZSogbV9uZXh0OwpAQCAtODQ4LDI3ICs4NDcsMjcgQEAgaW5saW5lIHZvaWQgYWRk
U3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkK
ICAgICAgICAgdXJscy5hZGQodXJsKTsKIH0KIAotaW5saW5lIHZvaWQgTm9kZTo6c2V0UGFyZW50
T3JIb3N0Tm9kZShDb250YWluZXJOb2RlKiBwYXJlbnQpCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRQ
YXJlbnRPclNoYWRvd0hvc3ROb2RlKENvbnRhaW5lck5vZGUqIHBhcmVudCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcGFyZW50T3JIb3N0Tm9kZSA9IHBhcmVudDsKKyAg
ICBtX3BhcmVudE9yU2hhZG93SG9zdE5vZGUgPSBwYXJlbnQ7CiB9CiAKLWlubGluZSBDb250YWlu
ZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29uc3QKK2lubGluZSBDb250YWluZXJO
b2RlKiBOb2RlOjpwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpKTsKLSAgICByZXR1cm4gbV9wYXJlbnRPckhvc3ROb2Rl
OworICAgIHJldHVybiBtX3BhcmVudE9yU2hhZG93SG9zdE5vZGU7CiB9CiAKIGlubGluZSBDb250
YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNTaGFk
b3dSb290KCkgPyAwIDogcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIHJldHVybiBpc1NoYWRvd1Jv
b3QoKSA/IDAgOiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiB9CiAKIGlubGluZSBDb250YWlu
ZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWlzU2hhZG93Um9vdCgpKTsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgp
OworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiB9CiAKIGlubGluZSB2b2lk
IE5vZGU6OnJlYXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA3
NjFlYzZmLi5mYzAzMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC01
OCwxMyArNTgsMTMgQEAgUHNldWRvRWxlbWVudDo6UHNldWRvRWxlbWVudChFbGVtZW50KiBwYXJl
bnQsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAgICwgbV9wc2V1ZG9JZChwc2V1ZG9JZCkKIHsKICAg
ICBBU1NFUlQocHNldWRvSWQgIT0gTk9QU0VVRE8pOwotICAgIHNldFBhcmVudE9ySG9zdE5vZGUo
cGFyZW50KTsKKyAgICBzZXRQYXJlbnRPclNoYWRvd0hvc3ROb2RlKHBhcmVudCk7CiAgICAgc2V0
SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFBzZXVk
b0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKQogewotICAgIHJldHVybiBwYXJlbnRP
ckhvc3RFbGVtZW50KCktPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRv
SWQpOworICAgIHJldHVybiBwYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCktPnJlbmRlcmVyKCkt
PmdldENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRvSWQpOwogfQogCiB2b2lkIFBzZXVkb0VsZW1l
bnQ6OmF0dGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBiNjM5ZTY4Li42MzQ2ZDQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUlu
aGVyaXRhbmNlKGJvb2wpOwogCi0gICAgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIHRv
RWxlbWVudChwYXJlbnRPckhvc3ROb2RlKCkpOyB9CisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0
IHsgcmV0dXJuIHRvRWxlbWVudChwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOyB9CiAgICAgRWxl
bWVudFNoYWRvdyogb3duZXIoKSBjb25zdCB7IHJldHVybiBob3N0KCkgPyBob3N0KCktPnNoYWRv
dygpIDogMDsgfQogCiAgICAgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
CmluZGV4IGI1YmRhYmIuLjcxZjFkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTI1Myw4ICsyNTMs
OCBAQCBzdGF0aWMgYm9vbCBpc1NWR1NoYWRvd1RleHQoVGV4dCogdGV4dCkKIAogc3RhdGljIGJv
b2wgaXNTVkdUZXh0KFRleHQqIHRleHQpCiB7Ci0gICAgTm9kZSogcGFyZW50T3JIb3N0Tm9kZSA9
IHRleHQtPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZS0+
aXNTVkdFbGVtZW50KCkgJiYgIXBhcmVudE9ySG9zdE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZvcmVpZ25PYmplY3RUYWcpOworICAgIE5vZGUqIHBhcmVudE9yU2hhZG93SG9zdE5vZGUgPSB0
ZXh0LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CisgICAgcmV0dXJuIHBhcmVudE9yU2hhZG93
SG9zdE5vZGUtPmlzU1ZHRWxlbWVudCgpICYmICFwYXJlbnRPclNoYWRvd0hvc3ROb2RlLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDA0MTM3NGMuLjUyNzVkZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xODg1LDcg
KzE4ODUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRGb2N1c2VkTm9kZUlmTmVlZGVkKCkK
ICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5zZXRG
b2N1c2VkTm9kZSh0YXJnZXQsIG1fZnJhbWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC0+cGFyZW50T3JIb3N0Tm9k
ZSgpOyAKKyAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpOwogICAgICAgICB9CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRO
b2RlKDApOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRl
eCBiNjIxMTcxLi43NzBhY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdW5zaWduZWQgQml0U3RhY2s6OnNpemUoKSBjb25zdAog
c3RhdGljIHVuc2lnbmVkIGRlcHRoQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUqIG5vZGUp
CiB7CiAgICAgdW5zaWduZWQgZGVwdGggPSAwOwotICAgIGZvciAoTm9kZSogcGFyZW50ID0gbm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JI
b3N0Tm9kZSgpKQorICAgIGZvciAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50T3JTaGFkb3dI
b3N0Tm9kZSgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKQogICAgICAgICArK2RlcHRoOwogICAgIHJldHVybiBkZXB0aDsKIH0KQEAgLTE5Myw3ICsx
OTMsNyBAQCBzdGF0aWMgTm9kZSogbmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJp
ZXMoTm9kZSogcmFuZ2VFbmRDb250YWluZXIsIGludAogICAgICAgICBpZiAoTm9kZSogbmV4dCA9
IHJhbmdlRW5kQ29udGFpbmVyLT5jaGlsZE5vZGUocmFuZ2VFbmRPZmZzZXQpKQogICAgICAgICAg
ICAgcmV0dXJuIG5leHQ7CiAgICAgfQotICAgIGZvciAoTm9kZSogbm9kZSA9IHJhbmdlRW5kQ29u
dGFpbmVyOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgZm9y
IChOb2RlKiBub2RlID0gcmFuZ2VFbmRDb250YWluZXI7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgaWYgKE5vZGUqIG5leHQgPSBub2RlLT5u
ZXh0U2libGluZygpKQogICAgICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgfQpAQCAtMjMxLDcg
KzIzMSw3IEBAIHN0YXRpYyB2b2lkIHNldFVwRnVsbHlDbGlwcGVkU3RhY2soQml0U3RhY2smIHN0
YWNrLCBOb2RlKiBub2RlKQogewogICAgIC8vIFB1dCB0aGUgbm9kZXMgaW4gYSB2ZWN0b3Igc28g
d2UgY2FuIGl0ZXJhdGUgaW4gcmV2ZXJzZSBvcmRlci4KICAgICBWZWN0b3I8Tm9kZSosIDEwMD4g
YW5jZXN0cnk7Ci0gICAgZm9yIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2Rl
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9y
IChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpCiAgICAgICAgIGFuY2Vz
dHJ5LmFwcGVuZChwYXJlbnQpOwogCiAgICAgLy8gQ2FsbCBwdXNoRnVsbHlDbGlwcGVkU3RhdGUg
b24gZWFjaCBub2RlIHN0YXJ0aW5nIHdpdGggdGhlIGVhcmxpZXN0IGFuY2VzdG9yLgpAQCAtNDI3
LDE0ICs0MjcsMTQgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAg
bmV4dCA9IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIGlmICghbmV4dCkgewog
ICAgICAgICAgICAgICAgIGJvb2wgcGFzdEVuZCA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobV9ub2Rl
KSA9PSBtX3Bhc3RFbmROb2RlOwotICAgICAgICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBt
X25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBwYXJlbnRO
b2RlID0gbV9ub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKCFuZXh0ICYmIHBhcmVudE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChw
YXN0RW5kICYmIHBhcmVudE5vZGUgPT0gbV9lbmRDb250YWluZXIpIHx8IG1fZW5kQ29udGFpbmVy
LT5pc0Rlc2NlbmRhbnRPZihwYXJlbnROb2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXZlUmVuZGVyZXIgPSBtX25vZGUtPnJl
bmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZSA9IHBhcmVudE5vZGU7CiAgICAg
ICAgICAgICAgICAgICAgIG1fZnVsbHlDbGlwcGVkU3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG1fbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZVJlbmRlcmVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZXhpdE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25O
b2RlKSB7CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OmFkdmFuY2UoKQogCiAgICAgICAgICAgICAvLyBFeGl0IGFsbCBvdGhlciBjb250
YWluZXJzLgogICAgICAgICAgICAgd2hpbGUgKCFtX25vZGUtPnByZXZpb3VzU2libGluZygpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFhZHZhbmNlUmVzcGVjdGluZ1JhbmdlKG1fbm9kZS0+cGFy
ZW50T3JIb3N0Tm9kZSgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWFkdmFuY2VSZXNwZWN0aW5n
UmFuZ2UobV9ub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwog
ICAgICAgICAgICAgICAgIGV4aXROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggMjExOGZiNi4uMDZhMGExMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0Q29udGVudEZyYW1lKEZyYW1lKiBmcmFt
ZSkKICAgICBBU1NFUlQoaW5Eb2N1bWVudCgpKTsKICAgICBtX2NvbnRlbnRGcmFtZSA9IGZyYW1l
OwogCi0gICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUgPSB0
aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAg
ICBub2RlLT5pbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKQEAgLTY5LDcg
KzY5LDcgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNsZWFyQ29udGVudEZyYW1lKCkK
IAogICAgIG1fY29udGVudEZyYW1lID0gMDsKIAotICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9k
ZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgZm9y
IChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaAppbmRleCBkMDdlY2UwLi5kMzQ3ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGJvb2wgY2FuTG9hZEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIpCiAgICAg
ewotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBvd25lcjsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBvd25lcjsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKGRpc2FibGVkU3VidHJlZVJvb3RzKCkuY29udGFpbnMobm9kZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcAppbmRleCBhODFmM2JkLi4xMTMwYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTIzOCwxMSArMjM4LDExIEBAIEVsZW1lbnQqIEhUTUxT
dHlsZUVsZW1lbnQ6OnNjb3BpbmdFbGVtZW50KCkgY29uc3QKICAgICAvLyBGSVhNRTogVGhpcyBw
cm9iYWJseSBuZWVkcyB0byBiZSByZWZpbmVkIGZvciBzY29wZWQgc3R5bGVzaGVldHMgd2l0aGlu
IHNoYWRvdyBET00uCiAgICAgLy8gQXMgd3JpdHRlbiwgc3VjaCBhIHN0eWxlc2hlZXQgY291bGQg
c3R5bGUgdGhlIGhvc3QgZWxlbWVudCwgYXMgd2VsbCBhcyBjaGlsZHJlbiBvZiB0aGUgaG9zdC4K
ICAgICAvLyBPVE9ILCB0aGlzIHBhdmVzIHRoZSB3YXkgZm9yIGEgOmJvdW5kLWVsZW1lbnQgaW1w
bGVtZW50YXRpb24uCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0ID0gcGFyZW50T3JI
b3N0Tm9kZSgpOwotICAgIGlmICghcGFyZW50T3JIb3N0IHx8ICFwYXJlbnRPckhvc3QtPmlzRWxl
bWVudE5vZGUoKSkKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3QgPSBwYXJl
bnRPclNoYWRvd0hvc3ROb2RlKCk7CisgICAgaWYgKCFwYXJlbnRPclNoYWRvd0hvc3QgfHwgIXBh
cmVudE9yU2hhZG93SG9zdC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50T3JIb3N0KTsKKyAgICByZXR1cm4gdG9FbGVtZW50
KHBhcmVudE9yU2hhZG93SG9zdCk7CiB9CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0
Y2hQZW5kaW5nTG9hZEV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApp
bmRleCA1N2IxYjc5Li4yMjUxNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5j
cHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGRl
c2NlbmRlbnRWaWRlb0VsZW1lbnQoTm9kZSogbm9kZSkKIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVv
RWxlbWVudCogYW5jZXN0b3JWaWRlb0VsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICB3aGlsZSAo
bm9kZSAmJiAhbm9kZS0+aGFzVGFnTmFtZSh2aWRlb1RhZykpCi0gICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCk7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+
KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggNjNiNDdkNS4uMWZhNWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnMoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50
TGlzdGVuZXJJbmZvPiYKICAgICAvLyBQdXNoIHRoaXMgbm9kZSBhcyB0aGUgZmlycyBlbGVtZW50
LgogICAgIGFuY2VzdG9ycy5hcHBlbmQobm9kZSk7CiAgICAgaWYgKGluY2x1ZGVBbmNlc3RvcnMp
IHsKLSAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9y
SG9zdE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9ySG9zdE5v
ZGUoKSkKKyAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSkKICAgICAgICAgICAgIGFuY2VzdG9ycy5hcHBlbmQoYW5jZXN0
b3IpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDFlMTIx
NGEuLmRjZTAxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNjgs
NyArMjI2OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPbmx5IGNo
YW5nZSB0aGUgZm9jdXMgd2hlbiBjbGlja2luZyBzY3JvbGxiYXJzIGlmIGl0IGNhbiB0cmFuc2Zl
cmVkIHRvIGEgbW91c2UgZm9jdXNhYmxlIG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKaW5kZXggMWRlMDIyMC4uZjI4MTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgY29tcGlsZVN1YnRh
cmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21l
dHJ5TGlzCiAgICAgICAgIE5vZGUqIGNvbnN0IG5vZGUgPSBpbnRlcnNlY3RlZE5vZGVzLml0ZW0o
aSk7CiAgICAgICAgIFZlY3RvcjxOb2RlKj4gdmlzaXRlZE5vZGVzOwogICAgICAgICBOb2RlKiBy
ZXNwb25kaW5nTm9kZSA9IDA7Ci0gICAgICAgIGZvciAoTm9kZSogdmlzaXRlZE5vZGUgPSBub2Rl
OyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogdmlzaXRlZE5vZGUgPSBub2RlOyB2aXNpdGVkTm9k
ZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7
CiAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgYSByZXN1bHQgZm9yIGEg
Y29tbW9uIGFuY2VzdG9yIGZyb20gYW5vdGhlciBjYW5kaWRhdGUuCiAgICAgICAgICAgICByZXNw
b25kaW5nTm9kZSA9IHJlc3BvbmRlck1hcC5nZXQodmlzaXRlZE5vZGUpOwogICAgICAgICAgICAg
aWYgKHJlc3BvbmRpbmdOb2RlKQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgY29tcGlsZVN1YnRh
cmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21l
dHJ5TGlzCiAgICAgICAgICAgICBpZiAobm9kZUZpbHRlcih2aXNpdGVkTm9kZSkpIHsKICAgICAg
ICAgICAgICAgICByZXNwb25kaW5nTm9kZSA9IHZpc2l0ZWROb2RlOwogICAgICAgICAgICAgICAg
IC8vIENvbnRpbnVlIHRoZSBpdGVyYXRpb24gdG8gY29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRo
ZSByZXNwb25kZXIsIHdoaWNoIHdlIHdpbGwgbmVlZCBsYXRlci4KLSAgICAgICAgICAgICAgICBm
b3IgKHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgdmlzaXRl
ZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewor
ICAgICAgICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JT
aGFkb3dIb3N0Tm9kZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEhhc2hTZXQ8
Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0LmFk
ZCh2aXNpdGVkTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MSw3ICsyODEsNyBA
QCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5v
ZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChjYW5kaWRhdGUtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgICAgIE5vZGUq
IHJlcGxhY2VtZW50ID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gY2Fu
ZGlkYXRlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBj
YW5kaWRhdGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICAgICAgICAgIHdoaWxlIChw
YXJlbnQgJiYgcGFyZW50LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgICAgaWYgKGVkaXRhYmxlQW5jZXN0
b3JzLmNvbnRhaW5zKHJlcGxhY2VtZW50KSkgewpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgY29t
cGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRh
cmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBlZGl0YWJsZUFuY2VzdG9ycy5hZGQocmVwbGFjZW1lbnQp
OwotICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FuZGlkYXRlID0gcmVwbGFjZW1lbnQ7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCBiNWJmZDgzLi5lYWNiYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC0yNjgsMTQgKzI2OCwxNCBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldFRv
Tm9uU2hhZG93QW5jZXN0b3IoKQogdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRJbm5lck5vZGUoTm9k
ZSogbikKIHsKICAgICBpZiAobiAmJiBuLT5pc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbiA9
IG4tPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKTsKICAgICBtX2lubmVyTm9kZSA9IG47CiB9CiAgICAgCiB2b2lkIEhpdFRlc3RSZXN1
bHQ6OnNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKiBuKQogewogICAgIGlmIChuICYmIG4tPmlz
UHNldWRvRWxlbWVudCgpKQotICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAg
ICAgICBuID0gbi0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFy
ZWROb2RlID0gbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmlu
ZGV4IGFkYzA3MDguLmFiNzI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTYxMSw3ICs2MTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgc3R5
bGVkIG5vZGUgdGhhdCBjYXVzZWQgdGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5kZXJlci4KICAg
ICAvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIG5vZGUoKSBleGNlcHQgZm9yIHJlbmRlcmVycyBvZiA6
YmVmb3JlIGFuZCA6YWZ0ZXIKICAgICAvLyBwc2V1ZG8gZWxlbWVudHMgZm9yIHdoaWNoIHRoZWly
IHBhcmVudCBub2RlIGlzIHJldHVybmVkLgotICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29u
c3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkgPyBub2RlKCktPnBhcmVudE9ySG9zdE5vZGUo
KSA6IG5vZGUoKTsgfQorICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4g
aXNQc2V1ZG9FbGVtZW50KCkgPyBub2RlKCktPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSA6IG5v
ZGUoKTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
LT5kb2N1bWVudCgpOyB9CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gZG9jdW1l
bnQoKS0+ZnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IDcyMzYyYjkuLmEzYjRhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMg
U3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAgIEVsZW1lbnQqIGJvZHkgPSBub2Rl
LT5kb2N1bWVudCgpLT5ib2R5KCk7CiAgICAgTm9kZSogcGFyZW50OwogICAgIGZvciAoTm9kZSog
biA9IG5vZGU7IG47IG4gPSBwYXJlbnQpIHsKLSAgICAgICAgcGFyZW50ID0gbi0+cGFyZW50T3JI
b3N0Tm9kZSgpOworICAgICAgICBwYXJlbnQgPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7
CiAgICAgICAgIGlmIChuICE9IG5vZGUpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiIG9mICIpOwogICAgICAgICBpZiAocGFyZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDgyMzU2MmIu
LjlhYzVjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIHZvaWQgZ2V0
RWxlbWVudENUTShTVkdFbGVtZW50KiBlbGVtZW50LCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSkKICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50ID09IHN0b3BBdEVsZW1lbnQpCiAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JIb3N0Tm9k
ZSgpOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGIwNTQzNmEuLmE3
ZTNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBi
b29sIFNWR0VsZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpIGNvbnN0CiAgICAgLy8g
SWYgd2UncmUgbGl2aW5nIGluIGEgc2hhZG93IHRyZWUsIHdlJ3JlIGEgPHN2Zz4gZWxlbWVudCB0
aGF0IGdvdCBjcmVhdGVkIGFzIHJlcGxhY2VtZW50CiAgICAgLy8gZm9yIGEgPHN5bWJvbD4gZWxl
bWVudCBvciBhIGNsb25lZCA8c3ZnPiBlbGVtZW50IGluIHRoZSByZWZlcmVuY2VkIHRyZWUuIElu
IHRoYXQgY2FzZQogICAgIC8vIHdlJ3JlIGFsd2F5cyBhbiBpbm5lciA8c3ZnPiBlbGVtZW50Lgot
ICAgIGlmIChpc0luU2hhZG93VHJlZSgpICYmIHBhcmVudE9ySG9zdEVsZW1lbnQoKSAmJiBwYXJl
bnRPckhvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQorICAgIGlmIChpc0luU2hhZG93VHJl
ZSgpICYmIHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSAmJiBwYXJlbnRPclNoYWRvd0hvc3RF
bGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBFbGVtZW50IG1heSBub3QgYmUgaW4gdGhlIGRvY3VtZW50LCBwcmV0ZW5kIHdlJ3JlIG91dGVy
bW9zdCBmb3Igdmlld3BvcnQoKSwgZ2V0Q1RNKCksIGV0Yy4KQEAgLTE4NywxMiArMTg3LDEyIEBA
IHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogcm9vdFBhcmVudCkK
IAogU1ZHU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6b3duZXJTVkdFbGVtZW50KCkgY29uc3QKIHsK
LSAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5l
ck5vZGUqIG4gPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgd2hpbGUgKG4pIHsKICAg
ICAgICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KG4pOwogCi0gICAgICAgIG4gPSBuLT5w
YXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yMDIsMTIgKzIwMiwxMiBAQCBTVkdFbGVt
ZW50KiBTVkdFbGVtZW50Ojp2aWV3cG9ydEVsZW1lbnQoKSBjb25zdAogewogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gbmVlZHMgc2hhZG93IHRyZWUgc3VwcG9ydCAtIGFzIFJlbmRlclNWR0NvbnRhaW5l
ciB1c2VzIHRoaXMgZnVuY3Rpb24KICAgICAvLyB0byBkZXRlcm1pbmUgdGhlICJvdmVyZmxvdyIg
cHJvcGVydHkuIDx1c2U+IG9uIDxzeW1ib2w+IHdvdWxkbid0IHdvcmsgb3RoZXJ3aGlzZS4KLSAg
ICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50T3JIb3N0Tm9kZSgpOworICAgIENvbnRhaW5lck5v
ZGUqIG4gPSBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAgICAgd2hpbGUgKG4pIHsKICAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykgfHwgbi0+aGFzVGFnTmFtZShT
VkdOYW1lczo6aW1hZ2VUYWcpIHx8IG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN5bWJvbFRhZykp
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG4pOwogCi0gICAg
ICAgIG4gPSBuLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIG4gPSBuLT5wYXJlbnRPclNo
YWRvd0hvc3ROb2RlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC00NDEsNyArNDQxLDcg
QEAgc3RhdGljIGJvb2wgaGFzTG9hZExpc3RlbmVyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYg
KGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGZvciAoZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9y
SG9zdEVsZW1lbnQoKTsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVs
ZW1lbnQoKSkgeworICAgIGZvciAoZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKTsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSkgewogICAgICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSA9
IGVsZW1lbnQtPmdldEV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5LnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBpZiAoZW50cnlbaV0udXNlQ2FwdHVyZSkKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFNW
R0VsZW1lbnQ6OnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRF
dmVudHMpCiAgICAgd2hpbGUgKGN1cnJlbnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC0+aGF2ZUxv
YWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkpIHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVu
dDsKICAgICAgICAgaWYgKHNlbmRQYXJlbnRMb2FkRXZlbnRzKQotICAgICAgICAgICAgcGFyZW50
ID0gY3VycmVudFRhcmdldC0+cGFyZW50T3JIb3N0RWxlbWVudCgpOyAvLyBzYXZlIHRoZSBuZXh0
IHBhcmVudCB0byBkaXNwYXRjaCB0b28gaW5jYXNlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBjaGFu
Z2VzIHRoZSB0cmVlCisgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50VGFyZ2V0LT5wYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KCk7IC8vIHNhdmUgdGhlIG5leHQgcGFyZW50IHRvIGRpc3BhdGNo
IHRvbyBpbmNhc2UgZGlzcGF0Y2hpbmcgdGhlIGV2ZW50IGNoYW5nZXMgdGhlIHRyZWUKICAgICAg
ICAgaWYgKGhhc0xvYWRMaXN0ZW5lcihjdXJyZW50VGFyZ2V0LmdldCgpKSkKICAgICAgICAgICAg
IGN1cnJlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
bG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgY3VycmVudFRhcmdldCA9IChwYXJl
bnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0Vs
ZW1lbnQ+KHBhcmVudCkgOiBSZWZQdHI8U1ZHRWxlbWVudD4oKTsKQEAgLTU4NSw3ICs1ODUsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRl
cmVyKCkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS0+c3R5bGVG
b3JFbGVtZW50KHRoaXMpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gMDsKLSAgICBpZiAo
RWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgaWYgKEVsZW1l
bnQqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgfQpAQCAtNjE3LDcgKzYxNyw3IEBAIFJl
bmRlclN0eWxlKiBTVkdFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpCiAgICAgICAgIHJldHVybiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpOwogCiAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMDsK
LSAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAg
aWYgKEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHBhcmVudFN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCmluZGV4IGNlMTYyNWEuLjg5M2Y2ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlKCk7CiAKLSAgICB2b2lk
IHNldFBhcmVudE9ySG9zdE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBtX3Bh
cmVudEluc3RhbmNlID0gaW5zdGFuY2U7IH0KKyAgICB2b2lkIHNldFBhcmVudE9yU2hhZG93SG9z
dE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBtX3BhcmVudEluc3RhbmNlID0g
aW5zdGFuY2U7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcAppbmRleCA0MWEyMmFhLi5mYWQwMTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsxNTMs
NyBAQCBib29sIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZQogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyOTcpCiAgICAgLy8gTm90ZSB0aGF0IHdlIGN1cnJlbnRs
eSBkbyBub3Qgc3VwcG9ydCBmb3JlaWduT2JqZWN0IGluc3RhbnRpYXRpb24gdmlhIDx1c2U+LCBo
ZW5jZSBpdCBpcyBzYWZlCiAgICAgLy8gdG8gdXNlIHBhcmVudEVsZW1lbnQoKSBoZXJlLiBJZiB0
aGF0IGNoYW5nZXMsIHRoaXMgbWV0aG9kIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZQotICAgIC8v
IHBhcmVudE9ySG9zdEVsZW1lbnQoKSBpbnN0ZWFkLgorICAgIC8vIHBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSBpbnN0ZWFkLgogICAgIEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50RWxlbWVu
dCgpOwogICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCkpIHsK
ICAgICAgICAgaWYgKGFuY2VzdG9yLT5yZW5kZXJlcigpICYmIGFuY2VzdG9yLT5yZW5kZXJlcigp
LT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5k
ZXggMWJmMTMxYi4uMTYwMzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgYm9vbCBTVkdHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYpCiB7CiAgICAgLy8gVW5saWtlIFNWR1N0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoKSwgd2Ugc3RpbGwgY3JlYXRlIHJlbmRlcmVycywgZXZlbiBpZgog
ICAgIC8vIGRpc3BsYXkgaXMgc2V0IHRvICdub25lJyAtIHdoaWNoIGlzIHNwZWNpYWwgdG8gU1ZH
IDxnPiBjb250YWluZXIgZWxlbWVudHMuCi0gICAgcmV0dXJuIHBhcmVudE9ySG9zdEVsZW1lbnQo
KSAmJiBwYXJlbnRPckhvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpOworICAgIHJldHVybiBw
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkgJiYgcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgp
LT5pc1NWR0VsZW1lbnQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xvY2F0YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApp
bmRleCA0MTVmNzBjLi5kNGYzMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TG9jYXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0RWxlbWVudChOb2RlKiBub2Rl
KQogU1ZHRWxlbWVudCogU1ZHTG9jYXRhYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIGZvciAo
RWxlbWVudCogY3VycmVudCA9IGVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKTsgY3VycmVu
dDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAo
RWxlbWVudCogY3VycmVudCA9IGVsZW1lbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsg
Y3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkg
ewogICAgICAgICBpZiAoaXNWaWV3cG9ydEVsZW1lbnQoY3VycmVudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGN1cnJlbnQpOwogICAgIH0KQEAgLTU1LDcg
KzU1LDcgQEAgU1ZHRWxlbWVudCogU1ZHTG9jYXRhYmxlOjpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVu
dChjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAg
ICBTVkdFbGVtZW50KiBmYXJ0aGVzdCA9IDA7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0g
ZWxlbWVudC0+cGFyZW50T3JIb3N0RWxlbWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+cGFyZW50T3JIb3N0RWxlbWVudCgpKSB7CisgICAgZm9yIChFbGVtZW50KiBjdXJyZW50ID0g
ZWxlbWVudC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc1Zp
ZXdwb3J0RWxlbWVudChjdXJyZW50KSkKICAgICAgICAgICAgIGZhcnRoZXN0ID0gc3RhdGljX2Nh
c3Q8U1ZHRWxlbWVudCo+KGN1cnJlbnQpOwogICAgIH0KQEAgLTg0LDcgKzg0LDcgQEAgQWZmaW5l
VHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6Y29tcHV0ZUNUTShTVkdFbGVtZW50KiBlbGVtZW50LCBD
VE1TY29wZSBtb2RlLCBTdHkKICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogCiAgICAgU1ZHRWxl
bWVudCogc3RvcEF0RWxlbWVudCA9IG1vZGUgPT0gTmVhcmVzdFZpZXdwb3J0U2NvcGUgPyBuZWFy
ZXN0Vmlld3BvcnRFbGVtZW50KGVsZW1lbnQpIDogMDsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJl
bnRFbGVtZW50ID0gZWxlbWVudDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0gY3Vy
cmVudEVsZW1lbnQtPnBhcmVudE9ySG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAoRWxlbWVudCog
Y3VycmVudEVsZW1lbnQgPSBlbGVtZW50OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQg
PSBjdXJyZW50RWxlbWVudC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAg
IGlmICghY3VycmVudEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgYnJlYWs7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA1MzRmODY0Li5i
ZWU0ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMjIs
NyArMTIyLDcgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIC8vIFNwZWM6IFNWRyBhbGxvd3Mg
aW5jbHVzaW9uIG9mIGVsZW1lbnRzIGZyb20gZm9yZWlnbiBuYW1lc3BhY2VzIGFueXdoZXJlCiAg
ICAgLy8gd2l0aCB0aGUgU1ZHIGNvbnRlbnQuIEluIGdlbmVyYWwsIHRoZSBTVkcgdXNlciBhZ2Vu
dCB3aWxsIGluY2x1ZGUgdGhlIHVua25vd24KICAgICAvLyBlbGVtZW50cyBpbiB0aGUgRE9NIGJ1
dCB3aWxsIG90aGVyd2lzZSBpZ25vcmUgdW5rbm93biBlbGVtZW50cy4gCi0gICAgaWYgKCFwYXJl
bnRPckhvc3RFbGVtZW50KCkgfHwgcGFyZW50T3JIb3N0RWxlbWVudCgpLT5pc1NWR0VsZW1lbnQo
KSkKKyAgICBpZiAoIXBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSB8fCBwYXJlbnRPclNoYWRv
d0hvc3RFbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyOTJlN2FjLi5hM2Y1MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAK
KzIwMTMtMDEtMzAgIENoYW5naHVuIEthbmcgIDx0ZW1vb2NoaW5AY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgUmVuYW1lIGZyb20gcGFyZW50T3JIb3N0KiB0byBwYXJlbnRPclNoYWRvd0hvc3Qq
IGluIE5vZGUuaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKwogMjAx
My0wMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTI2OTU4Mjc+IFBQVDogTWFrZSBsb2FkaW5nIGZpbGUgVVJMcyB3b3Jr
IHdpdGggYSBzYW5kYm94ZWQgTmV0d29ya1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhZWRhMTIwLi5lNjE5NTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzc0LDcg
KzE3NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29u
c3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRTaXplJgogI2VuZGlmCiAgICAgICAgIC8vIEZp
bmQgdGhlIG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbm9k
ZSByZXNwb25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CiAgICAgICAgIC8vIHBh
Z2VzIGhhcyBhIGdsb2JhbCBjbGljayBoYW5kbGVyIGFuZCB3ZSBkbyBub3Qgd2FudCB0byBoaWdo
bGlnaHQgdGhlIGJvZHkuCi0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IGFkanVzdGVkTm9kZTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBhZGp1c3RlZE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRv
d0hvc3ROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8
IG5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAot
LSAKMS43LjkuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>