<?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>74991</bug_id>
          
          <creation_ts>2011-12-20 21:25:02 -0800</creation_ts>
          <short_desc>Automate elements&apos; registration as document namedItem/extraNamedItem.</short_desc>
          <delta_ts>2011-12-23 13:37:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525080</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-20 21:25:02 -0800</bug_when>
    <thetext>Some of our HTML elements (applet, embed, form, iframe, image and object) track their &quot;name&quot; and &quot;id&quot; attributes in order to keep the &quot;named item&quot; and &quot;extra named item&quot; maps in HTMLDocument in sync.

We could do this automatically by hooking the relevant attribute changes and get rid of some duplicated code (plus those elements will shrink by two AtomicStrings each.)

Rough patch idea coming..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525089</commentid>
    <comment_count>1</comment_count>
      <attachid>120139</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-20 21:38:09 -0800</bug_when>
    <thetext>Created attachment 120139
Proposed patch

A first stab at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525090</commentid>
    <comment_count>2</comment_count>
      <attachid>120140</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-20 21:42:16 -0800</bug_when>
    <thetext>Created attachment 120140
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525355</commentid>
    <comment_count>3</comment_count>
      <attachid>120140</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-21 11:12:54 -0800</bug_when>
    <thetext>Comment on attachment 120140
Proposed patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525364</commentid>
    <comment_count>4</comment_count>
      <attachid>120140</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-21 11:21:23 -0800</bug_when>
    <thetext>Comment on attachment 120140
Proposed patch

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

r- for now for perf concern.

&gt; Source/WebCore/html/HTMLElement.cpp:1005
&gt; +void HTMLElement::insertedIntoDocument()
&gt; +{
&gt; +    StyledElement::insertedIntoDocument();
&gt; +
&gt; +    const AtomicString&amp; name = fastGetAttribute(HTMLNames::nameAttr);
&gt; +    if (!name.isNull())
&gt; +        updateName(nullAtom, name);
&gt; +}

Hmm, adding attribute lookup here might be slow. Is there a way to avoid this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525480</commentid>
    <comment_count>5</comment_count>
      <attachid>120214</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-21 12:42:57 -0800</bug_when>
    <thetext>Created attachment 120214
Proposed patch v2

Perf concern addressed by using a Node bit to cache whether we have a name attribute or not (just like we already did for id attributes.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525494</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 12:54:04 -0800</bug_when>
    <thetext>Attachment 120214 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;CMakeLists.txt&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTes...&quot; exit_code: 1

ERROR: FAILURES FOR &lt;lucid, x86_64, release, cpu&gt; in LayoutTests/platform/chromium/test_expectations.txt
ERROR: Line:192 Path does not exist. http/tests/workers/interrupt-database-sync-open-crash.html
LayoutTests/platform/chromium/test_expectations.txt:192:  Path does not exist. http/tests/workers/interrupt-database-sync-open-crash.html  [test/expectations] [2]
Total errors found: 1 in 62 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525557</commentid>
    <comment_count>7</comment_count>
      <attachid>120214</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-21 14:04:48 -0800</bug_when>
    <thetext>Comment on attachment 120214
Proposed patch v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525807</commentid>
    <comment_count>8</comment_count>
      <attachid>120214</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-21 16:25:31 -0800</bug_when>
    <thetext>Comment on attachment 120214
Proposed patch v2

Clearing flags on attachment: 120214

Committed r103473: &lt;http://trac.webkit.org/changeset/103473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525810</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-21 16:25:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525883</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-21 17:36:58 -0800</bug_when>
    <thetext>Reverted r103473 for reason:

Overestimated my superpowers.

Committed r103478: &lt;http://trac.webkit.org/changeset/103478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525969</commentid>
    <comment_count>11</comment_count>
      <attachid>120265</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-21 21:11:59 -0800</bug_when>
    <thetext>Created attachment 120265
Proposed patch v3

Same patch with the setHasName() moved to StyledElement::attributeChanged() to ensure that the hasID flag always gets set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525972</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 21:14:02 -0800</bug_when>
    <thetext>Attachment 120265 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:30:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526883</commentid>
    <comment_count>13</comment_count>
      <attachid>120265</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-23 09:36:01 -0800</bug_when>
    <thetext>Comment on attachment 120265
Proposed patch v3

Rejecting attachment 120265 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;-...&quot; exit_code: 2

Last 500 characters of output:
file Source/WebCore/html/HTMLFormElement.cpp
patching file Source/WebCore/html/HTMLFormElement.h
patching file Source/WebCore/html/HTMLImageElement.cpp
patching file Source/WebCore/html/HTMLImageElement.h
patching file Source/WebCore/html/HTMLObjectElement.cpp
patching file Source/WebCore/html/HTMLObjectElement.h
patching file Source/WebCore/html/HTMLPlugInElement.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Antti Koivisto&apos;, u&apos;--f...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10955394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526904</commentid>
    <comment_count>14</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-23 13:37:14 -0800</bug_when>
    <thetext>Committed r103638: &lt;http://trac.webkit.org/changeset/103638&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120139</attachid>
            <date>2011-12-20 21:38:09 -0800</date>
            <delta_ts>2011-12-20 21:42:16 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-74991.diff</filename>
            <type>text/plain</type>
            <size>25091</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTVmYmU4Li4yZDhjMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMg
QEAKKzIwMTEtMTItMjAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEF1dG9tYXRlIGVsZW1lbnRzJyByZWdpc3RyYXRpb24gYXMgZG9jdW1lbnQgbmFtZWRJdGVt
L2V4dHJhTmFtZWRJdGVtLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NDk5MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgY2Fj
aGluZyBvZiB0aGUgImlkIiBhbmQgIm5hbWUiIGF0dHJpYnV0ZXMgb24gYXBwbGV0LCBlbWJlZCwg
Zm9ybSwKKyAgICAgICAgaW1hZ2UgYW5kIG9iamVjdCBlbGVtZW50cy4gV2Ugd2VyZSBjYWNoaW5n
IHRoZW0gdG8ga2VlcCB0aGUgZG9jdW1lbnQncworICAgICAgICBtYXAgb2YgbmFtZWQgYW5kICJl
eHRyYSBuYW1lZCIgKG5hbWVkIGJ5IGlkKSBpdGVtIGNvdW50cyBpbiBzeW5jLgorCisgICAgICAg
IEluc3RlYWQsIGFkZCBhIGhvb2sgdG8gRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZSgpIHRo
YXQgZGV0ZWN0cyB3aGVuCisgICAgICAgIHRoZSBhdHRyaWJ1dGVzIGFyZSBiZWluZyBjaGFuZ2Vk
IGFuZCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbgorICAgICAgICBhdXRv
bWF0aWNhbGx5IGlmIHRoZSBlbGVtZW50IHJldHVybnMgdHJ1ZSBmb3Igc2hvdWxkUmVnaXN0ZXJB
c05hbWVkSXRlbSgpCisgICAgICAgIG9yIHNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSgp
IHJlc3BlY3RpdmVseS4KKworICAgICAgICBUaGlzIHNocmlua3MgdGhlIGVsZW1lbnRzIGJ5IHR3
byBBdG9taWNTdHJpbmdzICg4IG9yIDE2IGJ5dGVzKSBlYWNoLgorCisgICAgICAgIElGcmFtZSBl
bGVtZW50cyByZXRhaW4gdGhlIG9sZCBtZWNoYW5pc20gZm9yIG5vdywgYXMgdGhlcmUgYXJlIHNv
bWUgc3VidGxlCisgICAgICAgIGRpZmZlcmVuY2VzIHRvIGhvdyB0aGF0J3MgaGFuZGxlZC4KKwor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVw
ZGF0ZU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1
cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisKKyAgICAgICAgICAgIEFkZGVkLiBD
YWxsZWQgd2hlbiB0aGUgIm5hbWUiIGFuZCAiaWQiIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQuCisg
ICAgICAgICAgICBVcGRhdGVzIHRoZSBkb2N1bWVudCdzIG5hbWVkIGl0ZW0gbWFwcyBhY2NvcmRp
bmdseS4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSk6CisKKyAgICAgICAgICAgIEFkZGVk
LiBJZiBhbiBlbGVtZW50IHJldHVybnMgdHJ1ZSBmb3IgdGhlc2UsIGl0IHdpbGwgYmUgYXV0b21h
dGljYWxseQorICAgICAgICAgICAgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRo
ZSBuYW1lL2lkIGF0dHJpYnV0ZSBjaGFuZ2VzLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp1cGRhdGVJZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUpOgorCisgICAgICAg
ICogZG9tL05hbWVkTm9kZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6
OnNldEF0dHJpYnV0ZXMpOgorCisgICAgICAgICAgICBNYWtlIHN1cmUgdXBkYXRlTmFtZSgpIGlz
IGNhbGxlZCB3aGVuIHdlJ3JlIGNsb25pbmcgdGhlIGF0dHJpYnV0ZXMgZnJvbQorICAgICAgICAg
ICAgYW5vdGhlciBlbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaDoKKworICAgICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGlzIG5v
dyBoYW5kbGVkIGJ5IEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpmb3JtQ29udHJvbE5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVk
SXRlbSk6CisKKyAgICAgICAgICAgIFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgc2luY2Ugd2Ugbm8g
bG9uZ2VyIGNhY2hlIHRoZSBuYW1lLgorCiAyMDExLTEyLTIwICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlZUVCBjdWVzIHNvbWV0aW1lcyByZW5k
ZXIgd2hlbiB0aGV5IHNob3VsZCBub3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwZmRiNTc3
Li4yN2NiNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgpAQCAtMTk4MCw0ICsxOTgxLDI4IEBAIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJp
YnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIH0KICNl
bmRpZgogCit2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVkSXRlbVJlZ2lzdHJhdGlvbihjb25zdCBB
dG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBpZiAoIWRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0ob2xkTmFtZSk7CisKKyAgICBpZiAo
IW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihk
b2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOworfQorCit2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT5pc0hU
TUxEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW9sZElkLmlzRW1wdHko
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92
ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKKworICAgIGlmICghbmV3SWQuaXNFbXB0eSgpKQorICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1l
ZEl0ZW0obmV3SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5MmQ1OWM5Li4xN2I4Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTmFtZWRO
b2RlTWFwLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtMjY1LDYgKzI2Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1
cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d0lkKTsKKyAgICB2b2lkIHVwZGF0ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpOwogICAgIHZvaWQgd2lsbE1vZGlmeUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXpl
Rm9yUmVzaXppbmcoKSBjb25zdDsKQEAgLTQzNiw2ICs0MzgsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSk7CiAjZW5kaWYKIAorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVt
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZvaWQgdXBkYXRlTmFtZWRJdGVtUmVn
aXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdOYW1lKTsKKyAgICB2b2lkIHVwZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lKTsK
KwogcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxOYW1lZE5vZGVNYXA+IG1fYXR0cmlidXRl
TWFwOwogfTsKQEAgLTUxNSw2ICs1MjMsMjEgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRl
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXcKICAg
ICAgICAgc2NvcGUtPnJlbW92ZUVsZW1lbnRCeUlkKG9sZElkLCB0aGlzKTsKICAgICBpZiAoIW5l
d0lkLmlzRW1wdHkoKSkKICAgICAgICAgc2NvcGUtPmFkZEVsZW1lbnRCeUlkKG5ld0lkLCB0aGlz
KTsKKworICAgIGlmIChpc0hUTUxFbGVtZW50KCkgJiYgc2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFt
ZWRJdGVtKCkpCisgICAgICAgIHVwZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9uKG9sZElk
LCBuZXdJZCk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpCit7CisgICAg
aWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChvbGROYW1lID09
IG5ld05hbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpc0hUTUxFbGVtZW50KCkgJiYg
c2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpKQorICAgICAgICB1cGRhdGVOYW1lZEl0ZW1SZWdp
c3RyYXRpb24ob2xkTmFtZSwgbmV3TmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6Ondp
bGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKQEAgLTUyMiw2
ICs1NDUsOSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogICAgIGlmIChpc0lkQXR0cmlidXRl
TmFtZShuYW1lKSkKICAgICAgICAgdXBkYXRlSWQob2xkVmFsdWUsIG5ld1ZhbHVlKTsKIAorICAg
IGlmIChuYW1lID09IEhUTUxOYW1lczo6bmFtZUF0dHIpCisgICAgICAgIHVwZGF0ZU5hbWUob2xk
VmFsdWUsIG5ld1ZhbHVlKTsKKwogICAgIC8vIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgY2FsbCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyIGhlcmUuCiAKICNpZiBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05hbWVkTm9kZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApp
bmRleCAwMTQ5ZDU0Li4wZWE4NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApA
QCAtMjI2LDYgKzIyNiwxMiBAQCB2b2lkIE5hbWVkTm9kZU1hcDo6c2V0QXR0cmlidXRlcyhjb25z
dCBOYW1lZE5vZGVNYXAmIG90aGVyKQogICAgIGlmIChvbGRJZCB8fCBuZXdJZCkKICAgICAgICAg
bV9lbGVtZW50LT51cGRhdGVJZChvbGRJZCA/IG9sZElkLT52YWx1ZSgpIDogbnVsbEF0b20sIG5l
d0lkID8gbmV3SWQtPnZhbHVlKCkgOiBudWxsQXRvbSk7CiAKKyAgICBBdHRyaWJ1dGUqIG9sZE5h
bWUgPSBnZXRBdHRyaWJ1dGVJdGVtKEhUTUxOYW1lczo6bmFtZUF0dHIpOworICAgIEF0dHJpYnV0
ZSogbmV3TmFtZSA9IG90aGVyLmdldEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7
CisKKyAgICBpZiAob2xkTmFtZSB8fCBuZXdOYW1lKQorICAgICAgICBtX2VsZW1lbnQtPnVwZGF0
ZU5hbWUob2xkTmFtZSA/IG9sZE5hbWUtPnZhbHVlKCkgOiBudWxsQXRvbSwgbmV3TmFtZSA/IG5l
d05hbWUtPnZhbHVlKCkgOiBudWxsQXRvbSk7CisKICAgICBjbGVhckF0dHJpYnV0ZXMoKTsKICAg
ICB1bnNpZ25lZCBuZXdMZW5ndGggPSBvdGhlci5sZW5ndGgoKTsKICAgICBtX2F0dHJpYnV0ZXMu
cmVzaXplKG5ld0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
Y3BwCmluZGV4IGNmNmNjODQuLjE0YmExMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFw
cGxldEVsZW1lbnQuY3BwCkBAIC01Niw1MCArNTYsMTAgQEAgdm9pZCBIVE1MQXBwbGV0RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBhdHRyLT5u
YW1lKCkgPT0gbWF5c2NyaXB0QXR0ciB8fAogICAgICAgICBhdHRyLT5uYW1lKCkgPT0gb2JqZWN0
QXR0cikgewogICAgICAgICAvLyBEbyBub3RoaW5nLgotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSA9
IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+
aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAg
ICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZE5hbWVkSXRlbShuZXdOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSBu
ZXdOYW1lOwotICAgIH0gZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSkg
ewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lkID0gYXR0ci0+dmFsdWUoKTsKLSAg
ICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7
Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3Zl
RXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1l
ZEl0ZW0obmV3SWQpOwotICAgICAgICB9Ci0gICAgICAgIG1faWQgPSBuZXdJZDsKLSAgICAgICAg
Ly8gYWxzbyBjYWxsIHN1cGVyY2xhc3MKLSAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEFwcGxldEVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKLXsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGRvY3VtZW50
LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJ
dGVtKG1faWQpOwotICAgIH0KLQotICAgIEhUTUxQbHVnSW5FbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCkKLXsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAg
ICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhp
cy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1l
KTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgIH0K
LQotICAgIEhUTUxQbHVnSW5FbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7Ci19Ci0KIGJv
b2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGNvZGVBdHRy
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAppbmRleCBkODEzZWUzLi5l
NTM4N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCkBAIC00Nywx
MCArNDcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBBcHBsZXQoKSBjb25zdDsKICAgICBi
b29sIGNhbkVtYmVkSmF2YSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLQot
ICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFz
TmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSZWdpc3RlckFzRXh0cmFOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4
IGMxOWZlOTQuLmMzN2QwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC05
OTUsNiArOTk1LDI0IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZO
ZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChOb2RlKiBiZWZvcmVDCiAgICAgfQogfQogCit2b2lk
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCit7CisgICAgU3R5bGVkRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSA9IGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpuYW1lQXR0cik7CisgICAgaWYgKCFuYW1l
LmlzTnVsbCgpKQorICAgICAgICB1cGRhdGVOYW1lKG51bGxBdG9tLCBuYW1lKTsKK30KKwordm9p
ZCBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCit7CisgICAgU3R5bGVkRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
ID0gZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6Om5hbWVBdHRyKTsKKyAgICBpZiAoIW5hbWUu
aXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZU5hbWUobmFtZSwgbnVsbEF0b20pOworfQorCiBib29s
IEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QK
IHsKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4
IGE3MTg2NTkuLjlhODdmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEwNCw2
ICsxMDQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUo
QXR0cmlidXRlKikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDRkMGEyMTUuLmQwYmQzNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTExLDEzICsxMTEsNiBAQCB2
b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCAiMCIp
OwogICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCAiMCIp
OwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsK
LSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgp
KSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVt
b3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVt
KHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSB2YWx1ZTsKICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CkBAIC0yMTksOSArMjEyLDYgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpCiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBzdGF0aWNf
Y2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7Ci0K
ICAgICBTdHJpbmcgd2lkdGggPSBnZXRBdHRyaWJ1dGUod2lkdGhBdHRyKTsKICAgICBTdHJpbmcg
aGVpZ2h0ID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0dHIpOwogICAgIGlmICghd2lkdGguaXNFbXB0
eSgpIHx8ICFoZWlnaHQuaXNFbXB0eSgpKSB7CkBAIC0yMzcsMTQgKzIyNyw2IEBAIHZvaWQgSFRN
TEVtYmVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBI
VE1MRW1iZWRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKLXsKLSAgICBpZiAoZG9jdW1l
bnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50
Kj4oZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotCi0gICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotfQotCiB2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZl
RGVjbHMpCiB7CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChh
dHRyLCBwcmVzZXJ2ZURlY2xzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgK
aW5kZXggNDQ4NWUwOS4uYmQ2NzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmgKQEAgLTM5LDcgKzM5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2
b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUq
LCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxB
dHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CkBAIC01Nyw2ICs1Niw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBTdHJpbmcgaXRlbVZhbHVlVGV4dCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KSBPVkVSUklERTsKICNlbmRpZgorCisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNO
YW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNWE4ZWNhMy4uZTFhM2ZiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTMyLDkgKzEzMiw2
IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKQogewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQot
ICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJ
dGVtKG1fbmFtZSk7Ci0KICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
IAogICAgIGlmIChoYXNJRCgpKQpAQCAtMTQzLDkgKzE0MCw2IEBAIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92
ZU5hbWVkSXRlbShtX25hbWUpOwotCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1l
bnQoKTsKIAogICAgIGlmIChoYXNJRCgpKQpAQCAtMzg0LDE1ICszNzgsNyBAQCB2b2lkIEhUTUxG
b3JtRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG9ucmVzZXRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsK
LSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+dmFsdWUoKTsKLSAg
ICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7
Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3Zl
TmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5l
d05hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNl
CisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDMwMTI1ZmEu
LjQzMDg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTMxLDYg
KzEzMSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
IAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCBzdWJtaXQoRXZlbnQqLCBib29sIGFj
dGl2YXRlU3VibWl0QnV0dG9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgRm9ybVN1Ym1p
c3Npb25UcmlnZ2VyKTsKIAogICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0
dHJpYnV0ZShFbGVtZW50Kik7CkBAIC0xNjcsOCArMTY5LDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV93YXNNYWxmb3JtZWQ7CiAgICAgYm9vbCBtX3dhc0RlbW90ZWQ7Ci0KLSAgICBBdG9taWNT
dHJpbmcgbV9uYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNDJhNGU3OC4uNDU2ODE4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMzMsMjQgKzEzMyw2IEBA
IHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGNvbXBvc2l0ZUF0dHIpIHsKICAgICAgICAg
aWYgKCFwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGF0dHItPnZhbHVlKCksIG1fY29tcG9zaXRlT3Bl
cmF0b3IpKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7Ci0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBuYW1lQXR0cikgewotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAo
aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAg
ICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0
aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0ZW0o
bV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKLSAgICB9IGVsc2UgaWYgKGlzSWRB
dHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdJZCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9j
dW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwot
ICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG5ld0lkKTsKLSAgICAgICAgfQotICAg
ICAgICBtX2lkID0gbmV3SWQ7Ci0gICAgICAgIC8vIGFsc28gY2FsbCBzdXBlcmNsYXNzCi0gICAg
ICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAt
MTk3LDEyICsxNzksNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAKIHZvaWQg
SFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewotICAgIGlmIChkb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAg
ICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+YWRk
RXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGlu
c2VydGVkIGZyb20gYSByZW5kZXJlci1sZXNzIGRvY3VtZW50LAogICAgIC8vIG91ciBsb2FkZXIg
bWF5IGhhdmUgbm90IGZldGNoZWQgdGhlIGltYWdlLCBzbyBkbyBpdCBub3cuCiAgICAgaWYgKCFt
X2ltYWdlTG9hZGVyLmltYWdlKCkpCkBAIC0yMTEsMTcgKzE4Nyw2IEBAIHZvaWQgSFRNTEltYWdl
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIEhUTUxFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKQotewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbSht
X25hbWUpOwotICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0g
ICAgfQotCi0gICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLX0KLQogdm9p
ZCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKIHsKICAgICBp
ZiAoIW1fZm9ybSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA5
YmVjOWQ4Li42MDYxOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtOTgsMTAgKzk4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRl
ZXApOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKIAorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzRXh0cmFO
YW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKICNpZiBFTkFCTEUo
TUlDUk9EQVRBKQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1WYWx1ZVRleHQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CkBAIC0xMDksOCArMTExLDYgQEAgcHJpdmF0ZToKIAog
ICAgIEhUTUxJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogICAgIEhUTUxGb3JtRWxlbWVudCog
bV9mb3JtOwotICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0gICAgQXRvbWljU3RyaW5nIG1faWQ7
CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYTllMWYwNC4uZTcyZTdj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTExNCwy
NyArMTE0LDkgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwotICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0cikgewotICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld05hbWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoaXNEb2NOYW1lZEl0ZW0o
KSAmJiBpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAg
ICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVu
dCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVk
SXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShuZXdOYW1l
KTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSBuZXdOYW1lOwotICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwotICAgIGVs
c2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdJZCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpc0RvY05h
bWVkSXRlbSgpICYmIGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgp
KSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVt
b3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFO
YW1lZEl0ZW0obmV3SWQpOwotICAgICAgICB9Ci0gICAgICAgIG1faWQgPSBuZXdJZDsKLSAgICAg
ICAgLy8gYWxzbyBjYWxsIHN1cGVyY2xhc3MKLSAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAg
ICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KIApAQCAtMzQ2LDI2ICszMjgsMTEgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHZvaWQgSFRN
TE9iamVjdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIGlmICghaW5Eb2N1bWVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNEb2NOYW1lZEl0ZW0oKSAmJiBkb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAg
ICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+YWRk
RXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBpZiAoaXNEb2NOYW1lZEl0ZW0oKSAmJiBkb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAg
ICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+
cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQpAQCAtNDY2LDExICs0MzMsMTEgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlRG9jTmFtZWRJdGVtKCkKICAgICBpZiAoaXNOYW1lZEl0
ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKICAg
ICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+
KHRoaXMtPmRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaXNOYW1lZEl0ZW0pIHsKLSAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1l
ZEl0ZW0oZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZEV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRlKCkpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAg
ICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOworICAgICAgICAgICAgZG9j
dW1lbnQtPnJlbW92ZU5hbWVkSXRlbShmYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CisgICAg
ICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0oZ2V0SWRBdHRyaWJ1dGUoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9kb2NOYW1lZEl0ZW0gPSBpc05hbWVkSXRlbTsKQEAg
LTU0NCw3ICs1MTEsOCBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxP
YmplY3RFbGVtZW50Ojpmb3JtQ29udHJvbE5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX25h
bWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBtX25hbWU7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgcmV0dXJuIG5hbWUuaXNO
dWxsKCkgPyBlbXB0eUF0b20gOiBuYW1lOwogfQogCiBIVE1MRm9ybUVsZW1lbnQqIEhUTUxPYmpl
Y3RFbGVtZW50Ojp2aXJ0dWFsRm9ybSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmgKaW5kZXggZGNlYzVjZi4uZDU2NjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuaApAQCAtMTA3LDcgKzEwNyw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
IE9WRVJSSURFOwogI2VuZGlmCiAKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGlzRG9jTmFtZWRJdGVtKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4
dHJhTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNEb2NOYW1lZEl0ZW0oKTsg
fQorCiAgICAgU3RyaW5nIG1fY2xhc3NJZDsKICAgICBib29sIG1fZG9jTmFtZWRJdGVtIDogMTsK
ICAgICBib29sIG1fdXNlRmFsbGJhY2tDb250ZW50IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuaAppbmRleCAyZTMzYzY2Li43ZGFkZmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC02OCw5ICs2OCw2IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpID0gMDsK
IAotcHJvdGVjdGVkOgotICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0KIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTY3JpcHRJbnN0YW5jZSBtX2luc3RhbmNlOwogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120140</attachid>
            <date>2011-12-20 21:42:16 -0800</date>
            <delta_ts>2011-12-21 12:42:57 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-74991.diff</filename>
            <type>text/plain</type>
            <size>25495</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTVmYmU4Li4yZDhjMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMg
QEAKKzIwMTEtMTItMjAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEF1dG9tYXRlIGVsZW1lbnRzJyByZWdpc3RyYXRpb24gYXMgZG9jdW1lbnQgbmFtZWRJdGVt
L2V4dHJhTmFtZWRJdGVtLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NDk5MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgY2Fj
aGluZyBvZiB0aGUgImlkIiBhbmQgIm5hbWUiIGF0dHJpYnV0ZXMgb24gYXBwbGV0LCBlbWJlZCwg
Zm9ybSwKKyAgICAgICAgaW1hZ2UgYW5kIG9iamVjdCBlbGVtZW50cy4gV2Ugd2VyZSBjYWNoaW5n
IHRoZW0gdG8ga2VlcCB0aGUgZG9jdW1lbnQncworICAgICAgICBtYXAgb2YgbmFtZWQgYW5kICJl
eHRyYSBuYW1lZCIgKG5hbWVkIGJ5IGlkKSBpdGVtIGNvdW50cyBpbiBzeW5jLgorCisgICAgICAg
IEluc3RlYWQsIGFkZCBhIGhvb2sgdG8gRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZSgpIHRo
YXQgZGV0ZWN0cyB3aGVuCisgICAgICAgIHRoZSBhdHRyaWJ1dGVzIGFyZSBiZWluZyBjaGFuZ2Vk
IGFuZCBoYW5kbGUgdGhlIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbgorICAgICAgICBhdXRv
bWF0aWNhbGx5IGlmIHRoZSBlbGVtZW50IHJldHVybnMgdHJ1ZSBmb3Igc2hvdWxkUmVnaXN0ZXJB
c05hbWVkSXRlbSgpCisgICAgICAgIG9yIHNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSgp
IHJlc3BlY3RpdmVseS4KKworICAgICAgICBUaGlzIHNocmlua3MgdGhlIGVsZW1lbnRzIGJ5IHR3
byBBdG9taWNTdHJpbmdzICg4IG9yIDE2IGJ5dGVzKSBlYWNoLgorCisgICAgICAgIElGcmFtZSBl
bGVtZW50cyByZXRhaW4gdGhlIG9sZCBtZWNoYW5pc20gZm9yIG5vdywgYXMgdGhlcmUgYXJlIHNv
bWUgc3VidGxlCisgICAgICAgIGRpZmZlcmVuY2VzIHRvIGhvdyB0aGF0J3MgaGFuZGxlZC4KKwor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVw
ZGF0ZU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1
cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisKKyAgICAgICAgICAgIEFkZGVkLiBD
YWxsZWQgd2hlbiB0aGUgIm5hbWUiIGFuZCAiaWQiIGF0dHJpYnV0ZXMgYXJlIGNoYW5nZWQuCisg
ICAgICAgICAgICBVcGRhdGVzIHRoZSBkb2N1bWVudCdzIG5hbWVkIGl0ZW0gbWFwcyBhY2NvcmRp
bmdseS4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSk6CisKKyAgICAgICAgICAgIEFkZGVk
LiBJZiBhbiBlbGVtZW50IHJldHVybnMgdHJ1ZSBmb3IgdGhlc2UsIGl0IHdpbGwgYmUgYXV0b21h
dGljYWxseQorICAgICAgICAgICAgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkb2N1bWVudCB3aGVuIHRo
ZSBuYW1lL2lkIGF0dHJpYnV0ZSBjaGFuZ2VzLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp1cGRhdGVJZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUpOgorCisgICAgICAg
ICogZG9tL05hbWVkTm9kZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6
OnNldEF0dHJpYnV0ZXMpOgorCisgICAgICAgICAgICBNYWtlIHN1cmUgdXBkYXRlTmFtZSgpIGlz
IGNhbGxlZCB3aGVuIHdlJ3JlIGNsb25pbmcgdGhlIGF0dHJpYnV0ZXMgZnJvbQorICAgICAgICAg
ICAgYW5vdGhlciBlbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1i
ZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaDoKKworICAgICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGlzIG5v
dyBoYW5kbGVkIGJ5IEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpmb3JtQ29udHJvbE5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVk
SXRlbSk6CisKKyAgICAgICAgICAgIFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgc2luY2Ugd2Ugbm8g
bG9uZ2VyIGNhY2hlIHRoZSBuYW1lLgorCiAyMDExLTEyLTIwICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlZUVCBjdWVzIHNvbWV0aW1lcyByZW5k
ZXIgd2hlbiB0aGV5IHNob3VsZCBub3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwZmRiNTc3
Li4yN2NiNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgpAQCAtMTk4MCw0ICsxOTgxLDI4IEBAIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJp
YnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIH0KICNl
bmRpZgogCit2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVkSXRlbVJlZ2lzdHJhdGlvbihjb25zdCBB
dG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBpZiAoIWRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0ob2xkTmFtZSk7CisKKyAgICBpZiAo
IW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihk
b2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOworfQorCit2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT5pc0hU
TUxEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW9sZElkLmlzRW1wdHko
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92
ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKKworICAgIGlmICghbmV3SWQuaXNFbXB0eSgpKQorICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkRXh0cmFOYW1l
ZEl0ZW0obmV3SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5MmQ1OWM5Li4wYjA3MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTmFtZWRO
b2RlTWFwLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtMjY1LDYgKzI2Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1
cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d0lkKTsKKyAgICB2b2lkIHVwZGF0ZU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpOwogICAgIHZvaWQgd2lsbE1vZGlmeUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXpl
Rm9yUmVzaXppbmcoKSBjb25zdDsKQEAgLTM4MSw2ICszODMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSB7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKTsKIAorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVt
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkgY2FsbHMgdGhlIGZvbGxvd2luZyB0d28gZnVu
Y3Rpb25zLgogICAgIC8vIFRoZXkgYXJlIHNlcGFyYXRlZCB0byBhbGxvdyBhIGRpZmZlcmVudCBm
bG93IG9mIGNvbnRyb2wgaW4gU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgpLgogICAg
IHZvaWQgcmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUq
KTsKQEAgLTQzNiw2ICs0NDEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5xdWV1ZUF0dHJpYnV0
ZXNNdXRhdGlvblJlY29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlKTsKICNlbmRpZgogCisgICAgdm9pZCB1cGRhdGVOYW1lZEl0
ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgdXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRp
b24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05h
bWUpOworCiBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPE5hbWVkTm9kZU1hcD4gbV9hdHRy
aWJ1dGVNYXA7CiB9OwpAQCAtNTE1LDYgKzUyMywyMSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1
cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
dwogICAgICAgICBzY29wZS0+cmVtb3ZlRWxlbWVudEJ5SWQob2xkSWQsIHRoaXMpOwogICAgIGlm
ICghbmV3SWQuaXNFbXB0eSgpKQogICAgICAgICBzY29wZS0+YWRkRWxlbWVudEJ5SWQobmV3SWQs
IHRoaXMpOworCisgICAgaWYgKGlzSFRNTEVsZW1lbnQoKSAmJiBzaG91bGRSZWdpc3RlckFzRXh0
cmFOYW1lZEl0ZW0oKSkKKyAgICAgICAgdXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24o
b2xkSWQsIG5ld0lkKTsKK30KKworaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK3sK
KyAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG9sZE5h
bWUgPT0gbmV3TmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzSFRNTEVsZW1lbnQo
KSAmJiBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkpCisgICAgICAgIHVwZGF0ZU5hbWVkSXRl
bVJlZ2lzdHJhdGlvbihvbGROYW1lLCBuZXdOYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgRWxlbWVu
dDo6d2lsbE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQpAQCAt
NTIyLDYgKzU0NSw5IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAgICAgaWYgKGlzSWRBdHRy
aWJ1dGVOYW1lKG5hbWUpKQogICAgICAgICB1cGRhdGVJZChvbGRWYWx1ZSwgbmV3VmFsdWUpOwog
CisgICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpuYW1lQXR0cikKKyAgICAgICAgdXBkYXRlTmFt
ZShvbGRWYWx1ZSwgbmV3VmFsdWUpOworCiAgICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBj
YWxsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIgaGVyZS4KIAog
I2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWROb2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAu
Y3BwCmluZGV4IDAxNDlkNTQuLjBlYTg2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAu
Y3BwCkBAIC0yMjYsNiArMjI2LDEyIEBAIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRBdHRyaWJ1dGVz
KGNvbnN0IE5hbWVkTm9kZU1hcCYgb3RoZXIpCiAgICAgaWYgKG9sZElkIHx8IG5ld0lkKQogICAg
ICAgICBtX2VsZW1lbnQtPnVwZGF0ZUlkKG9sZElkID8gb2xkSWQtPnZhbHVlKCkgOiBudWxsQXRv
bSwgbmV3SWQgPyBuZXdJZC0+dmFsdWUoKSA6IG51bGxBdG9tKTsKIAorICAgIEF0dHJpYnV0ZSog
b2xkTmFtZSA9IGdldEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7CisgICAgQXR0
cmlidXRlKiBuZXdOYW1lID0gb3RoZXIuZ2V0QXR0cmlidXRlSXRlbShIVE1MTmFtZXM6Om5hbWVB
dHRyKTsKKworICAgIGlmIChvbGROYW1lIHx8IG5ld05hbWUpCisgICAgICAgIG1fZWxlbWVudC0+
dXBkYXRlTmFtZShvbGROYW1lID8gb2xkTmFtZS0+dmFsdWUoKSA6IG51bGxBdG9tLCBuZXdOYW1l
ID8gbmV3TmFtZS0+dmFsdWUoKSA6IG51bGxBdG9tKTsKKwogICAgIGNsZWFyQXR0cmlidXRlcygp
OwogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IG90aGVyLmxlbmd0aCgpOwogICAgIG1fYXR0cmli
dXRlcy5yZXNpemUobmV3TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHAKaW5kZXggY2Y2Y2M4NC4uMTRiYTExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTU2LDUwICs1NiwxMCBAQCB2b2lkIEhUTUxBcHBsZXRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIGF0
dHItPm5hbWUoKSA9PSBtYXlzY3JpcHRBdHRyIHx8CiAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBv
YmplY3RBdHRyKSB7CiAgICAgICAgIC8vIERvIG5vdGhpbmcuCi0gICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdO
YW1lID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAg
ICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBk
b2N1bWVudC0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFt
ZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1l
KCkpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgp
OwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5y
ZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRy
YU5hbWVkSXRlbShuZXdJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pZCA9IG5ld0lkOwotICAg
ICAgICAvLyBhbHNvIGNhbGwgc3VwZXJjbGFzcwotICAgICAgICBIVE1MUGx1Z0luRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxQbHVn
SW5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MQXBw
bGV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQotewotICAgIGlmIChkb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBz
dGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgZG9j
dW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFO
YW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCk7Ci19Ci0KLXZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKQotewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQq
Pih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbSht
X25hbWUpOwotICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0g
ICAgfQotCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLX0K
LQogYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoY29k
ZUF0dHIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IGQ4MTNl
ZTMuLmU1Mzg3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAg
LTQ3LDEwICs0Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cEFwcGxldCgpIGNvbnN0Owog
ICAgIGJvb2wgY2FuRW1iZWRKYXZhKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwotCi0gICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lz
dGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggYzE5ZmU5NC4uYzM3ZDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTk5NSw2ICs5OTUsMjQgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxp
dHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUMKICAgICB9CiB9CiAK
K3ZvaWQgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBTdHlsZWRF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworCisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6Om5hbWVBdHRyKTsKKyAgICBpZiAo
IW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZU5hbWUobnVsbEF0b20sIG5hbWUpOworfQor
Cit2b2lkIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKK3sKKyAgICBTdHlsZWRF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bmFtZUF0dHIpOworICAgIGlmICgh
bmFtZS5pc051bGwoKSkKKyAgICAgICAgdXBkYXRlTmFtZShuYW1lLCBudWxsQXRvbSk7Cit9CisK
IGJvb2wgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBj
b25zdAogewogI2lmIEVOQUJMRShNSUNST0RBVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgK
aW5kZXggYTcxODY1OS4uOWE4N2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAt
MTA0LDYgKzEwNCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggNGQwYTIxNS4uZDBiZDM0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xMTEsMTMgKzExMSw2
IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5V2lkdGgs
ICIwIik7CiAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlIZWlnaHQs
ICIwIik7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0
cikgewotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50
LT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1l
ZEl0ZW0odmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IHZhbHVlOwogICAgIH0g
ZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KQEAgLTIxOSw5ICsyMTIsNiBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCkKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHN0
YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obV9uYW1l
KTsKLQogICAgIFN0cmluZyB3aWR0aCA9IGdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpOwogICAgIFN0
cmluZyBoZWlnaHQgPSBnZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0cik7CiAgICAgaWYgKCF3aWR0aC5p
c0VtcHR5KCkgfHwgIWhlaWdodC5pc0VtcHR5KCkpIHsKQEAgLTIzNywxNCArMjI3LDYgQEAgdm9p
ZCBIVE1MRW1iZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgfQogfQogCi12
b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQotewotICAgIGlmIChk
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9j
dW1lbnQqPihkb2N1bWVudCgpKS0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0KLSAgICBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7Ci19Ci0KIHZvaWQgSFRN
TEVtYmVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJl
c2VydmVEZWNscykKIHsKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaAppbmRleCA0NDg1ZTA5Li5iZDY3NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuaApAQCAtMzksNyArMzksNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
ZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJp
YnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKQEAgLTU3LDYgKzU2LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVmFsdWVUZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpIE9WRVJSSURFOwogI2VuZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0
ZXJBc05hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA1YThlY2EzLi5lMWEz
ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xMzIsOSAr
MTMyLDYgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpCiB7Ci0gICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRO
YW1lZEl0ZW0obV9uYW1lKTsKLQogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogCiAgICAgaWYgKGhhc0lEKCkpCkBAIC0xNDMsOSArMTQwLDYgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1
bWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+
cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0KICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCgpOwogCiAgICAgaWYgKGhhc0lEKCkpCkBAIC0zODQsMTUgKzM3OCw3IEBAIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gb25yZXNldEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2V0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cikpOwotICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0
cikgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUgPSBhdHRyLT52YWx1ZSgp
OwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50
KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5y
ZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0
ZW0obmV3TmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKLSAgICB9
IGVsc2UKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggMzAx
MjVmYS4uNDMwODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0x
MzEsNiArMTMxLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJv
b2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3Jt
U3VibWlzc2lvblRyaWdnZXIpOwogCiAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhG
b3JtQXR0cmlidXRlKEVsZW1lbnQqKTsKQEAgLTE2Nyw4ICsxNjksNiBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX3dhc01hbGZvcm1lZDsKICAgICBib29sIG1fd2FzRGVtb3RlZDsKLQotICAgIEF0
b21pY1N0cmluZyBtX25hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0MmE0ZTc4Li40NTY4MTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTEzMywyNCArMTMz
LDYgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29tcG9zaXRlQXR0cikgewogICAg
ICAgICBpZiAoIXBhcnNlQ29tcG9zaXRlT3BlcmF0b3IoYXR0ci0+dmFsdWUoKSwgbV9jb21wb3Np
dGVPcGVyYXRvcikpCiAgICAgICAgICAgICBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlcjsKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IG5hbWVBdHRyKSB7Ci0gICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAg
IGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAg
ICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVu
dCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVk
SXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShuZXdOYW1l
KTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSBuZXdOYW1lOwotICAgIH0gZWxzZSBpZiAo
aXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSkgewotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld0lkID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAm
JiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQo
KSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOwotICAgICAgICB9
Ci0gICAgICAgIG1faWQgPSBuZXdJZDsKLSAgICAgICAgLy8gYWxzbyBjYWxsIHN1cGVyY2xhc3MK
LSAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0g
ZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9
CkBAIC0xOTcsMTIgKzE3OSw2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YXR0YWNoKCkKIAog
dm9pZCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7Ci0gICAgaWYg
KGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwot
ICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgIGRvY3VtZW50
LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBoYXZlIGJl
ZW4gaW5zZXJ0ZWQgZnJvbSBhIHJlbmRlcmVyLWxlc3MgZG9jdW1lbnQsCiAgICAgLy8gb3VyIGxv
YWRlciBtYXkgaGF2ZSBub3QgZmV0Y2hlZCB0aGUgaW1hZ2UsIHNvIGRvIGl0IG5vdy4KICAgICBp
ZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKQEAgLTIxMSwxNyArMTg3LDYgQEAgdm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCk7CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6cmVtb3Zl
ZEZyb21Eb2N1bWVudCgpCi17Ci0gICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkp
IHsKLSAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJ
dGVtKG1fbmFtZSk7Ci0gICAgICAgIGRvY3VtZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lk
KTsKLSAgICB9Ci0KLSAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotfQot
CiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogewog
ICAgIGlmICghbV9mb3JtKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmlu
ZGV4IDliZWM5ZDguLjYwNjE4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCkBAIC05OCwxMCArOTgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJv
b2wgZGVlcCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwog
CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNF
eHRyYU5hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwogI2lmIEVO
QUJMRShNSUNST0RBVEEpCiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbVZhbHVlVGV4dCgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKQEAgLTEwOSw4ICsxMTEsNiBAQCBwcml2YXRl
OgogCiAgICAgSFRNTEltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiAgICAgSFRNTEZvcm1FbGVt
ZW50KiBtX2Zvcm07Ci0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLSAgICBBdG9taWNTdHJpbmcg
bV9pZDsKICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBhOWUxZjA0Li5l
NzJlN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAt
MTE0LDI3ICsxMTQsOSBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIp
CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxv
YWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3TmFtZSA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpc0RvY05hbWVk
SXRlbSgpICYmIGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7
Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3Zl
TmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5l
d05hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0cikKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gYm9yZGVyQXR0cikKICAgICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGUoYXR0cik7Ci0g
ICAgZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSkgewotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld0lkID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKGlz
RG9jTmFtZWRJdGVtKCkgJiYgaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50
LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRF
eHRyYU5hbWVkSXRlbShuZXdJZCk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9pZCA9IG5ld0lkOwot
ICAgICAgICAvLyBhbHNvIGNhbGwgc3VwZXJjbGFzcwotICAgICAgICBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKLSAgICB9IGVsc2UKKyAgICBlbHNl
CiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQogCkBAIC0zNDYsMjYgKzMyOCwxMSBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgaWYgKCFpbkRv
Y3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpc0RvY05hbWVkSXRlbSgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwot
ICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgIGRvY3VtZW50
LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAgICB9Ci0KICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewotICAgIGlmIChpc0RvY05hbWVkSXRlbSgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgSFRNTERvY3VtZW50KiBk
b2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwot
ICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgIGRvY3Vt
ZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAgICB9Ci0KICAgICBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CkBAIC00NjYsMTEgKzQzMywxMSBAQCB2
b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0oKQogICAgIGlmIChpc05h
bWVkSXRlbSAhPSB3YXNOYW1lZEl0ZW0gJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkg
ewogICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3Vt
ZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc05hbWVkSXRlbSkgewotICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFk
ZE5hbWVkSXRlbShmYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0oZ2V0SWRBdHRyaWJ1dGUoKSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAg
ICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7CisgICAgICAgICAg
ICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJdGVtKGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShnZXRJZEF0dHJpYnV0
ZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2RvY05hbWVkSXRlbSA9IGlzTmFtZWRJdGVt
OwpAQCAtNTQ0LDcgKzUxMSw4IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTE9iamVjdEVsZW1lbnQ6OmZvcm1Db250cm9sTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fbmFtZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IG1fbmFtZTsKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUgPSBmYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICByZXR1cm4gbmFt
ZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IG5hbWU7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRN
TE9iamVjdEVsZW1lbnQ6OnZpcnR1YWxGb3JtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAppbmRleCBkY2VjNWNmLi5kNTY2NDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC0xMDcsNyArMTA3LDkgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gaXNEb2NOYW1lZEl0ZW0oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3Rl
ckFzRXh0cmFOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpc0RvY05hbWVkSXRl
bSgpOyB9CisKICAgICBTdHJpbmcgbV9jbGFzc0lkOwogICAgIGJvb2wgbV9kb2NOYW1lZEl0ZW0g
OiAxOwogICAgIGJvb2wgbV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IDJlMzNjNjYuLjdkYWRmZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTY4LDkgKzY4LDYgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkg
PSAwOwogCi1wcm90ZWN0ZWQ6Ci0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLQogcHJpdmF0ZToK
ICAgICBtdXRhYmxlIFNjcmlwdEluc3RhbmNlIG1faW5zdGFuY2U7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCg==
</data>
<flag name="review"
          id="120322"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120214</attachid>
            <date>2011-12-21 12:42:57 -0800</date>
            <delta_ts>2011-12-21 21:11:59 -0800</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-74991-v2.diff</filename>
            <type>text/plain</type>
            <size>27896</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNmYyNzdmLi41YzA5NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAx
IEBACisyMDExLTEyLTIxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAg
ICAgICBBdXRvbWF0ZSBlbGVtZW50cycgcmVnaXN0cmF0aW9uIGFzIGRvY3VtZW50IG5hbWVkSXRl
bS9leHRyYU5hbWVkSXRlbS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ5OTE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNh
Y2hpbmcgb2YgdGhlICJpZCIgYW5kICJuYW1lIiBhdHRyaWJ1dGVzIG9uIGFwcGxldCwgZW1iZWQs
IGZvcm0sCisgICAgICAgIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMuIFdlIHdlcmUgY2FjaGlu
ZyB0aGVtIHRvIGtlZXAgdGhlIGRvY3VtZW50J3MKKyAgICAgICAgbWFwIG9mIG5hbWVkIGFuZCAi
ZXh0cmEgbmFtZWQiIChuYW1lZCBieSBpZCkgaXRlbSBjb3VudHMgaW4gc3luYy4KKworICAgICAg
ICBJbnN0ZWFkLCBhZGQgYSBob29rIHRvIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoKSB0
aGF0IGRldGVjdHMgd2hlbgorICAgICAgICB0aGUgYXR0cmlidXRlcyBhcmUgYmVpbmcgY2hhbmdl
ZCBhbmQgaGFuZGxlIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24KKyAgICAgICAgYXV0
b21hdGljYWxseSBpZiB0aGUgZWxlbWVudCByZXR1cm5zIHRydWUgZm9yIHNob3VsZFJlZ2lzdGVy
QXNOYW1lZEl0ZW0oKQorICAgICAgICBvciBzaG91bGRSZWdpc3RlckFzRXh0cmFOYW1lZEl0ZW0o
KSByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgVGhpcyBzaHJpbmtzIHRoZSBlbGVtZW50cyBieSB0
d28gQXRvbWljU3RyaW5ncyAoOCBvciAxNiBieXRlcykgZWFjaC4KKworICAgICAgICBJRnJhbWUg
ZWxlbWVudHMgcmV0YWluIHRoZSBvbGQgbWVjaGFuaXNtIGZvciBub3csIGFzIHRoZXJlIGFyZSBz
b21lIHN1YnRsZQorICAgICAgICBkaWZmZXJlbmNlcyB0byBob3cgdGhhdCdzIGhhbmRsZWQuCisK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNOYW1lKToKKworICAgICAgICAgICAgQ2Fj
aGUgd2hldGhlciB3ZSBoYXZlIGEgIm5hbWUiIGF0dHJpYnV0ZSBvciBub3QgKDEgYml0IG9uIE5v
ZGUuKQorICAgICAgICAgICAgVGhpcyBpcyBkb25lIGluIG9yZGVyIHRvIG1pbmltaXplIHRoZSBv
dmVyaGVhZCBhZGRlZCB0byBFbGVtZW50J3MKKyAgICAgICAgICAgIGluc2VydGVkSW50b0RvY3Vt
ZW50KCkgYW5kIHJlbW92ZUZyb21Eb2N1bWVudCgpLgorCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlTmFtZWRJdGVtUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUV4dHJhTmFtZWRJdGVtUmVn
aXN0cmF0aW9uKToKKworICAgICAgICAgICAgQWRkZWQuIENhbGxlZCB3aGVuIHRoZSAibmFtZSIg
YW5kICJpZCIgYXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgICAgIFVwZGF0ZXMgdGhl
IGRvY3VtZW50J3MgbmFtZWQgaXRlbSBtYXBzIGFjY29yZGluZ2x5LgorCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKworICAgICAgICAgICAgTWFrZSBzdXJlIHVw
ZGF0ZU5hbWUoKSBpcyBjYWxsZWQgaW4gYWRkaXRpb24gdG8gdXBkYXRlSWQoKSB3aGVuIGFwcGxp
Y2FibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgor
CisgICAgICAgICAgICBVcGRhdGUgdGhlIE5vZGUncyBoYXMtbmFtZSBmbGFnIGFzIGFwcHJvcHJp
YXRlLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVtKToKKworICAgICAgICAgICAgQWRkZWQu
IElmIGFuIGVsZW1lbnQgcmV0dXJucyB0cnVlIGZvciB0aGVzZSwgaXQgd2lsbCBiZSBhdXRvbWF0
aWNhbGx5CisgICAgICAgICAgICByZWdpc3RlcmVkIHdpdGggdGhlIGRvY3VtZW50IHdoZW4gdGhl
IG5hbWUvaWQgYXR0cmlidXRlIGNoYW5nZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnVwZGF0ZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZU5hbWUpOgorCisg
ICAgICAgICAgICBSZWdpc3Rlci91bnJlZ2lzdGVyIGZyb20gdGhlIGRvY3VtZW50J3MgbmFtZWQg
aXRlbSBtYXBzIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
aWxsTW9kaWZ5QXR0cmlidXRlKToKKworICAgICAgICAgICAgQWRkIHVwZGF0ZU5hbWUoKSBob29r
IGluIGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyB1cGRhdGVJZCgpIGhvb2suCisKKyAgICAgICAg
KiBkb20vTmFtZWROb2RlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6
c2V0QXR0cmlidXRlcyk6CisKKyAgICAgICAgICAgIE1ha2Ugc3VyZSB1cGRhdGVOYW1lKCkgaXMg
Y2FsbGVkIHdoZW4gd2UncmUgY2xvbmluZyB0aGUgYXR0cmlidXRlcworICAgICAgICAgICAgZnJv
bSBhbm90aGVyIGVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuaDoKKworICAgICAgICAgICAgUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGlzIG5vdyBo
YW5kbGVkIGJ5IEVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmZvcm1Db250cm9sTmFt
ZSk6CisKKyAgICAgICAgICAgIFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgc2luY2Ugd2Ugbm8gbG9u
Z2VyIGNhY2hlIHRoZSBuYW1lLgorCiAyMDExLTEyLTIxICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlA
d2Via2l0Lm9yZz4KIAogICAgICAgICBOZXcgcmVuZGVyZXIgZm9yIFNWR1JlY3RFbGVtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMGZkYjU3Ny4uYmJlZDczMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRN
TERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTY3OSw2ICs2ODAs
OCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29s
KQogewogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKQogICAgICAgICBp
ZEF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IEhU
TUxOYW1lczo6bmFtZUF0dHIpCisgICAgICAgIHNldEhhc05hbWUoIWF0dHItPmlzTnVsbCgpKTsK
ICAgICByZWNhbGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOwogICAg
IHVwZGF0ZUFmdGVyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKIH0KQEAgLTg5MSwyMyArODk0LDMz
IEBAIHZvaWQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIGlmIChTaGFkb3dS
b290KiBzaGFkb3cgPSBzaGFkb3dSb290KCkpCiAgICAgICAgIHNoYWRvdy0+aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKIAotICAgIGlmIChoYXNJRCgpKSB7Ci0gICAgICAgIGlmIChtX2F0dHJpYnV0
ZU1hcCkgeworICAgIGlmIChtX2F0dHJpYnV0ZU1hcCkgeworICAgICAgICBpZiAoaGFzSUQoKSkg
ewogICAgICAgICAgICAgQXR0cmlidXRlKiBpZEl0ZW0gPSBtX2F0dHJpYnV0ZU1hcC0+Z2V0QXR0
cmlidXRlSXRlbShkb2N1bWVudCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgICAgICAgICBp
ZiAoaWRJdGVtICYmICFpZEl0ZW0tPmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUlk
KG51bGxBdG9tLCBpZEl0ZW0tPnZhbHVlKCkpOwogICAgICAgICB9CisgICAgICAgIGlmIChoYXNO
YW1lKCkpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZSogbmFtZUl0ZW0gPSBtX2F0dHJpYnV0ZU1h
cC0+Z2V0QXR0cmlidXRlSXRlbShIVE1MTmFtZXM6Om5hbWVBdHRyKTsKKyAgICAgICAgICAgIGlm
IChuYW1lSXRlbSAmJiAhbmFtZUl0ZW0tPmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHVwZGF0
ZU5hbWUobnVsbEF0b20sIG5hbWVJdGVtLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0KIH0K
IAogdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBpZiAoaGFzSUQo
KSkgewotICAgICAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKKyAgICBpZiAobV9hdHRyaWJ1dGVN
YXApIHsKKyAgICAgICAgaWYgKGhhc0lEKCkpIHsKICAgICAgICAgICAgIEF0dHJpYnV0ZSogaWRJ
dGVtID0gbV9hdHRyaWJ1dGVNYXAtPmdldEF0dHJpYnV0ZUl0ZW0oZG9jdW1lbnQoKS0+aWRBdHRy
aWJ1dGVOYW1lKCkpOwogICAgICAgICAgICAgaWYgKGlkSXRlbSAmJiAhaWRJdGVtLT5pc051bGwo
KSkKICAgICAgICAgICAgICAgICB1cGRhdGVJZChpZEl0ZW0tPnZhbHVlKCksIG51bGxBdG9tKTsK
ICAgICAgICAgfQorICAgICAgICBpZiAoaGFzTmFtZSgpKSB7CisgICAgICAgICAgICBBdHRyaWJ1
dGUqIG5hbWVJdGVtID0gbV9hdHRyaWJ1dGVNYXAtPmdldEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVz
OjpuYW1lQXR0cik7CisgICAgICAgICAgICBpZiAobmFtZUl0ZW0gJiYgIW5hbWVJdGVtLT5pc051
bGwoKSkKKyAgICAgICAgICAgICAgICB1cGRhdGVOYW1lKG5hbWVJdGVtLT52YWx1ZSgpLCBudWxs
QXRvbSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVkRnJv
bURvY3VtZW50KCk7CkBAIC0xOTgwLDQgKzE5OTMsMjggQEAgYm9vbCBFbGVtZW50OjpmYXN0QXR0
cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogfQog
I2VuZGlmCiAKK3ZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lKQorewor
ICAgIGlmICghZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFvbGROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERv
Y3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShvbGROYW1lKTsKKworICAgIGlm
ICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+
KGRvY3VtZW50KCkpLT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7Cit9CisKK3ZvaWQgRWxlbWVudDo6
dXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJ
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPmlz
SFRNTERvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghb2xkSWQuaXNFbXB0
eSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+cmVt
b3ZlRXh0cmFOYW1lZEl0ZW0ob2xkSWQpOworCisgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkpCisg
ICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5hZGRFeHRyYU5h
bWVkSXRlbShuZXdJZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDkyZDU5YzkuLjcxNmEwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOYW1l
ZE5vZGVNYXAuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogCkBAIC0yNjUsNiArMjY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKICAgICB2b2lk
IHVwZGF0ZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3SWQpOworICAgIHZvaWQgdXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSk7CiAgICAgdm9pZCB3aWxsTW9kaWZ5QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKIAogICAgIExheW91dFNpemUgbWluaW11bVNp
emVGb3JSZXNpemluZygpIGNvbnN0OwpAQCAtMzgxLDYgKzM4Myw5IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpOwogCisg
ICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzRXh0cmFOYW1lZEl0
ZW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gVGhlIGltcGxlbWVudGF0aW9u
IG9mIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoKSBjYWxscyB0aGUgZm9sbG93aW5nIHR3byBm
dW5jdGlvbnMuCiAgICAgLy8gVGhleSBhcmUgc2VwYXJhdGVkIHRvIGFsbG93IGEgZGlmZmVyZW50
IGZsb3cgb2YgY29udHJvbCBpbiBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkuCiAg
ICAgdm9pZCByZWNhbGNTdHlsZUlmTmVlZGVkQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0
ZSopOwpAQCAtNDM2LDYgKzQ0MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnF1ZXVlQXR0cmli
dXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpOwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZU5hbWVk
SXRlbVJlZ2lzdHJhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3TmFtZSk7CisgICAgdm9pZCB1cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJh
dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
TmFtZSk7CisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8TmFtZWROb2RlTWFwPiBtX2F0
dHJpYnV0ZU1hcDsKIH07CkBAIC01MTUsMTIgKzUyMywyOSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50
Ojp1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ldwogICAgICAgICBzY29wZS0+cmVtb3ZlRWxlbWVudEJ5SWQob2xkSWQsIHRoaXMpOwogICAg
IGlmICghbmV3SWQuaXNFbXB0eSgpKQogICAgICAgICBzY29wZS0+YWRkRWxlbWVudEJ5SWQobmV3
SWQsIHRoaXMpOworCisgICAgaWYgKHNob3VsZFJlZ2lzdGVyQXNFeHRyYU5hbWVkSXRlbSgpKQor
ICAgICAgICB1cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbihvbGRJZCwgbmV3SWQpOwor
fQorCitpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lKQoreworICAgIGlmICghaW5Eb2N1
bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAob2xkTmFtZSA9PSBuZXdOYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpKQor
ICAgICAgICB1cGRhdGVOYW1lZEl0ZW1SZWdpc3RyYXRpb24ob2xkTmFtZSwgbmV3TmFtZSk7CiB9
CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkpCiAg
ICAgICAgIHVwZGF0ZUlkKG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9
PSBIVE1MTmFtZXM6Om5hbWVBdHRyKQorICAgICAgICB1cGRhdGVOYW1lKG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGNhbGwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ciBoZXJlLgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
ZE5vZGVNYXAuY3BwCmluZGV4IDAxNDlkNTQuLjBlYTg2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1l
ZE5vZGVNYXAuY3BwCkBAIC0yMjYsNiArMjI2LDEyIEBAIHZvaWQgTmFtZWROb2RlTWFwOjpzZXRB
dHRyaWJ1dGVzKGNvbnN0IE5hbWVkTm9kZU1hcCYgb3RoZXIpCiAgICAgaWYgKG9sZElkIHx8IG5l
d0lkKQogICAgICAgICBtX2VsZW1lbnQtPnVwZGF0ZUlkKG9sZElkID8gb2xkSWQtPnZhbHVlKCkg
OiBudWxsQXRvbSwgbmV3SWQgPyBuZXdJZC0+dmFsdWUoKSA6IG51bGxBdG9tKTsKIAorICAgIEF0
dHJpYnV0ZSogb2xkTmFtZSA9IGdldEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7
CisgICAgQXR0cmlidXRlKiBuZXdOYW1lID0gb3RoZXIuZ2V0QXR0cmlidXRlSXRlbShIVE1MTmFt
ZXM6Om5hbWVBdHRyKTsKKworICAgIGlmIChvbGROYW1lIHx8IG5ld05hbWUpCisgICAgICAgIG1f
ZWxlbWVudC0+dXBkYXRlTmFtZShvbGROYW1lID8gb2xkTmFtZS0+dmFsdWUoKSA6IG51bGxBdG9t
LCBuZXdOYW1lID8gbmV3TmFtZS0+dmFsdWUoKSA6IG51bGxBdG9tKTsKKwogICAgIGNsZWFyQXR0
cmlidXRlcygpOwogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IG90aGVyLmxlbmd0aCgpOwogICAg
IG1fYXR0cmlidXRlcy5yZXNpemUobmV3TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDIxOTU1YWQu
LjA5MzY3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjk1LDYgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAorICAgIGJvb2wgaGFzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzTmFtZUZsYWcp
OyB9CiAgICAgYm9vbCBoYXNJRCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzSURGbGFnKTsg
fQogICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc0NsYXNzRmxh
Zyk7IH0KICAgICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNBY3RpdmVG
bGFnKTsgfQpAQCAtMzA5LDYgKzMxMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkTmVlZHNT
dHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxj
RmxhZyk7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNMaW5r
RmxhZyk7IH0KIAorICAgIHZvaWQgc2V0SGFzTmFtZShib29sIGYpIHsgc2V0RmxhZyhmLCBIYXNO
YW1lRmxhZyk7IH0KICAgICB2b2lkIHNldEhhc0lEKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0lE
RmxhZyk7IH0KICAgICB2b2lkIHNldEhhc0NsYXNzKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0Ns
YXNzRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHsgc2V0Rmxh
ZyhDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnKTsgfQpAQCAtNjQ1LDYgKzY0Nyw4IEBAIHByaXZh
dGU6CiAgICAgICAgIEhhc0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxlRmxhZyA9IDEgPDwgMjgs
CiAgICAgICAgIEhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXJGbGFnID0gMSA8PCAyOSwKIAorICAg
ICAgICBIYXNOYW1lRmxhZyA9IDEgPDwgMzAsCisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBE
ZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxl
QXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKQEAg
LTY1Miw3ICs2NTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfTsKIAotICAgIC8vIDIgYml0
cyByZW1haW5pbmcKKyAgICAvLyAxIGJpdCByZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0RmxhZyhO
b2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAg
dm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9ub2RlRmxhZ3Mg
PSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYgJiBtYXNrKTsgfSAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggY2Y2Y2M4NC4uMTRiYTEx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTU2LDUw
ICs1NiwxMCBAQCB2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBtYXlzY3JpcHRBdHRyIHx8
CiAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBvYmplY3RBdHRyKSB7CiAgICAgICAgIC8vIERvIG5v
dGhpbmcuCi0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAg
aWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAg
ICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50
Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJ
dGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5ld05hbWUp
OwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNlIGlmIChp
c0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgp
KTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbShuZXdJZCk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9pZCA9IG5ld0lkOwotICAgICAgICAvLyBhbHNvIGNhbGwgc3VwZXJjbGFzcwot
ICAgICAgICBIVE1MUGx1Z0luRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAg
ICAgfSBlbHNlCiAgICAgICAgIEhUTUxQbHVnSW5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKQotewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAg
IEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlz
LT5kb2N1bWVudCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwot
ICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCi0gICAg
SFRNTFBsdWdJbkVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci19Ci0KLXZvaWQgSFRN
TEFwcGxldEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQotewotICAgIGlmIChkb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAg
ZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+cmVt
b3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLX0KLQogYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoY29kZUF0dHIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5oCmluZGV4IGQ4MTNlZTMuLmU1Mzg3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAgLTQ3LDEwICs0Nyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXR1cEFwcGxldCgpIGNvbnN0OwogICAgIGJvb2wgY2FuRW1iZWRKYXZhKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotCi0gICAgQXRvbWljU3RyaW5nIG1faWQ7Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNFeHRy
YU5hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDRkMGEyMTUuLmQwYmQz
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTExLDEz
ICsxMTEsNiBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0
eVdpZHRoLCAiMCIpOwogICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5
SGVpZ2h0LCAiMCIpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
bmFtZUF0dHIpIHsKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hU
TUxEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBk
b2N1bWVudC0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+
YWRkTmFtZWRJdGVtKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSB2YWx1ZTsK
ICAgICB9IGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CkBAIC0yMTksOSArMjEyLDYgQEAgdm9pZCBIVE1MRW1iZWRFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVt
KG1fbmFtZSk7Ci0KICAgICBTdHJpbmcgd2lkdGggPSBnZXRBdHRyaWJ1dGUod2lkdGhBdHRyKTsK
ICAgICBTdHJpbmcgaGVpZ2h0ID0gZ2V0QXR0cmlidXRlKGhlaWdodEF0dHIpOwogICAgIGlmICgh
d2lkdGguaXNFbXB0eSgpIHx8ICFoZWlnaHQuaXNFbXB0eSgpKSB7CkBAIC0yMzcsMTQgKzIyNyw2
IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIH0K
IH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKLXsKLSAg
ICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotCi0g
ICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotfQotCiB2
b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBi
b29sIHByZXNlcnZlRGVjbHMpCiB7CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmgKaW5kZXggNDQ4NWUwOS4uYmQ2NzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdl
ZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CkBAIC01Nyw2ICs1Niw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbVZhbHVlVGV4dCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICNlbmRpZgorCisgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNWE4ZWNh
My4uZTFhM2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAt
MTMyLDkgKzEzMiw2IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgp
KS0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7Ci0KICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKIAogICAgIGlmIChoYXNJRCgpKQpAQCAtMTQzLDkgKzE0MCw2IEBAIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAKIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1l
bnQoKSktPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKIAogICAgIGlmIChoYXNJRCgpKQpAQCAtMzg0LDE1ICszNzgsNyBA
QCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJt
aXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucmVzZXRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNldEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
bmFtZUF0dHIpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+
dmFsdWUoKTsKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1
bWVudC0+cmVtb3ZlTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRk
TmFtZWRJdGVtKG5ld05hbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IG5ld05hbWU7
Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmlu
ZGV4IDMwMTI1ZmEuLjQzMDg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aApAQCAtMTMxLDYgKzEzMSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVt
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCBzdWJtaXQoRXZl
bnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsKIAogICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5k
ZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50Kik7CkBAIC0xNjcsOCArMTY5LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV93YXNNYWxmb3JtZWQ7CiAgICAgYm9vbCBtX3dhc0RlbW90ZWQ7Ci0K
LSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNDJhNGU3OC4uNDU2
ODE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMzMs
MjQgKzEzMyw2IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGNvbXBvc2l0ZUF0dHIp
IHsKICAgICAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGF0dHItPnZhbHVlKCksIG1f
Y29tcG9zaXRlT3BlcmF0b3IpKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBuYW1lQXR0cikg
ewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUgPSBhdHRyLT52YWx1ZSgpOwot
ICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkp
IHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
RG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1v
dmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0o
bmV3TmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKLSAgICB9IGVs
c2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdJZCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpbkRvY3Vt
ZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgSFRN
TERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRv
Y3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1f
aWQpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG5ld0lkKTsKLSAg
ICAgICAgfQotICAgICAgICBtX2lkID0gbmV3SWQ7Ci0gICAgICAgIC8vIGFsc28gY2FsbCBzdXBl
cmNsYXNzCi0gICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
ICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQpAQCAtMTk3LDEyICsxNzksNiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dGFj
aCgpCiAKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewot
ICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVu
dCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBk
b2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgLy8gSWYgd2Ug
aGF2ZSBiZWVuIGluc2VydGVkIGZyb20gYSByZW5kZXJlci1sZXNzIGRvY3VtZW50LAogICAgIC8v
IG91ciBsb2FkZXIgbWF5IGhhdmUgbm90IGZldGNoZWQgdGhlIGltYWdlLCBzbyBkbyBpdCBub3cu
CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkpCkBAIC0yMTEsMTcgKzE4Nyw2IEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIEhUTUxFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQotewotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1
bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92
ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0
ZW0obV9pZCk7Ci0gICAgfQotCi0gICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKLX0KLQogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCkKIHsKICAgICBpZiAoIW1fZm9ybSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAppbmRleCA5YmVjOWQ4Li42MDYxOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaApAQCAtOTgsMTAgKzk4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0Owog
CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
VHJlZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBk
ZWVwKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdp
c3RlckFzRXh0cmFOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisK
ICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1WYWx1ZVRleHQo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CkBAIC0xMDksOCArMTExLDYgQEAg
cHJpdmF0ZToKIAogICAgIEhUTUxJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogICAgIEhUTUxG
b3JtRWxlbWVudCogbV9mb3JtOwotICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0gICAgQXRvbWlj
U3RyaW5nIG1faWQ7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYTll
MWYwNC4uZTcyZTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKQEAgLTExNCwyNyArMTE0LDkgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxv
YWRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5i
ZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikp
OwotICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0cikgewotICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld05hbWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoaXNE
b2NOYW1lZEl0ZW0oKSAmJiBpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQt
PnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVk
SXRlbShuZXdOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSBuZXdOYW1lOwotICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCisgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0
dHIpOwotICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKLSAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAg
IGlmIChpc0RvY05hbWVkSXRlbSgpICYmIGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hU
TUxEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBk
b2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgICAgICAgICBkb2N1bWVu
dC0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOwotICAgICAgICB9Ci0gICAgICAgIG1faWQgPSBu
ZXdJZDsKLSAgICAgICAgLy8gYWxzbyBjYWxsIHN1cGVyY2xhc3MKLSAgICAgICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7Ci0gICAgfSBlbHNlCisg
ICAgZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKTsKIH0KIApAQCAtMzQ2LDI2ICszMjgsMTEgQEAgYm9vbCBIVE1MT2JqZWN0RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAg
ICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIGlm
ICghaW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNEb2NOYW1lZEl0
ZW0oKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVu
dCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICBk
b2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogfQogCiB2b2lkIEhUTUxPYmpl
Y3RFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBpZiAoaXNEb2NOYW1lZEl0
ZW0oKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgIEhUTUxEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVu
dCgpKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAg
ICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgfQotCiAgICAgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQpAQCAtNDY2LDExICs0MzMs
MTEgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlRG9jTmFtZWRJdGVtKCkKICAgICBp
ZiAoaXNOYW1lZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhU
TUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaXNOYW1lZEl0ZW0p
IHsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbShtX2lkKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGROYW1lZEl0ZW0oZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRlKCkpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25hbWUp
OwotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOworICAg
ICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShmYXN0R2V0QXR0cmlidXRlKG5hbWVB
dHRyKSk7CisgICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0oZ2V0SWRB
dHRyaWJ1dGUoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9kb2NOYW1lZEl0ZW0gPSBpc05h
bWVkSXRlbTsKQEAgLTU0NCw3ICs1MTEsOCBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjphcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxPYmplY3RFbGVtZW50Ojpmb3JtQ29udHJvbE5hbWUoKSBjb25zdAogewotICAg
IHJldHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBtX25hbWU7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lID0gZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgcmV0
dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBuYW1lOwogfQogCiBIVE1MRm9ybUVsZW1l
bnQqIEhUTUxPYmplY3RFbGVtZW50Ojp2aXJ0dWFsRm9ybSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggZGNlYzVjZi4uZDU2NjQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtMTA3LDcgKzEwNyw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKLSAgICBBdG9taWNTdHJpbmcgbV9pZDsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGlzRG9jTmFtZWRJdGVtKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNEb2NO
YW1lZEl0ZW0oKTsgfQorCiAgICAgU3RyaW5nIG1fY2xhc3NJZDsKICAgICBib29sIG1fZG9jTmFt
ZWRJdGVtIDogMTsKICAgICBib29sIG1fdXNlRmFsbGJhY2tDb250ZW50IDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCAyZTMzYzY2Li43ZGFkZmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC02OCw5ICs2OCw2IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5k
aW5ncygpID0gMDsKIAotcHJvdGVjdGVkOgotICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0KIHBy
aXZhdGU6CiAgICAgbXV0YWJsZSBTY3JpcHRJbnN0YW5jZSBtX2luc3RhbmNlOwogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120265</attachid>
            <date>2011-12-21 21:11:59 -0800</date>
            <delta_ts>2011-12-23 09:36:01 -0800</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-74991-v3.diff</filename>
            <type>text/plain</type>
            <size>28173</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZDM2MDBkLi45ODhjYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAy
IEBACisyMDExLTEyLTIxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAg
ICAgICBBdXRvbWF0ZSBlbGVtZW50cycgcmVnaXN0cmF0aW9uIGFzIGRvY3VtZW50IG5hbWVkSXRl
bS9leHRyYU5hbWVkSXRlbS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ5OTE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNh
Y2hpbmcgb2YgdGhlICJpZCIgYW5kICJuYW1lIiBhdHRyaWJ1dGVzIG9uIGFwcGxldCwgZW1iZWQs
IGZvcm0sCisgICAgICAgIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMuIFdlIHdlcmUgY2FjaGlu
ZyB0aGVtIHRvIGtlZXAgdGhlIGRvY3VtZW50J3MKKyAgICAgICAgbWFwIG9mIG5hbWVkIGFuZCAi
ZXh0cmEgbmFtZWQiIChuYW1lZCBieSBpZCkgaXRlbSBjb3VudHMgaW4gc3luYy4KKworICAgICAg
ICBJbnN0ZWFkLCBhZGQgYSBob29rIHRvIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoKSB0
aGF0IGRldGVjdHMgd2hlbgorICAgICAgICB0aGUgYXR0cmlidXRlcyBhcmUgYmVpbmcgY2hhbmdl
ZCBhbmQgaGFuZGxlIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24KKyAgICAgICAgYXV0
b21hdGljYWxseSBpZiB0aGUgZWxlbWVudCByZXR1cm5zIHRydWUgZm9yIHNob3VsZFJlZ2lzdGVy
QXNOYW1lZEl0ZW0oKQorICAgICAgICBvciBzaG91bGRSZWdpc3RlckFzRXh0cmFOYW1lZEl0ZW0o
KSByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgVGhpcyBzaHJpbmtzIHRoZSBlbGVtZW50cyBieSB0
d28gQXRvbWljU3RyaW5ncyAoOCBvciAxNiBieXRlcykgZWFjaC4KKworICAgICAgICBJRnJhbWUg
ZWxlbWVudHMgcmV0YWluIHRoZSBvbGQgbWVjaGFuaXNtIGZvciBub3csIGFzIHRoZXJlIGFyZSBz
b21lIHN1YnRsZQorICAgICAgICBkaWZmZXJlbmNlcyB0byBob3cgdGhhdCdzIGhhbmRsZWQuCisK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzTmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNOYW1lKToKKworICAgICAgICAgICAgQ2Fj
aGUgd2hldGhlciB3ZSBoYXZlIGEgIm5hbWUiIGF0dHJpYnV0ZSBvciBub3QgKDEgYml0IG9uIE5v
ZGUuKQorICAgICAgICAgICAgVGhpcyBpcyBkb25lIGluIG9yZGVyIHRvIG1pbmltaXplIHRoZSBv
dmVyaGVhZCBhZGRlZCB0byBFbGVtZW50J3MKKyAgICAgICAgICAgIGluc2VydGVkSW50b0RvY3Vt
ZW50KCkgYW5kIHJlbW92ZUZyb21Eb2N1bWVudCgpLgorCisgICAgICAgICogZG9tL1N0eWxlZEVs
ZW1lbnQuY3BwCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKToKKworICAgICAgICAgICAgVXBkYXRlIHRoZSBOb2RlJ3MgaGFzLW5hbWUgZmxhZyBhcyBh
cHByb3ByaWF0ZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnVwZGF0ZU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojp1cGRhdGVFeHRyYU5hbWVkSXRlbVJlZ2lzdHJhdGlvbik6CisKKyAgICAg
ICAgICAgIEFkZGVkLiBDYWxsZWQgd2hlbiB0aGUgIm5hbWUiIGFuZCAiaWQiIGF0dHJpYnV0ZXMg
YXJlIGNoYW5nZWQuCisgICAgICAgICAgICBVcGRhdGVzIHRoZSBkb2N1bWVudCdzIG5hbWVkIGl0
ZW0gbWFwcyBhY2NvcmRpbmdseS4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCk6CisKKyAgICAgICAgICAgIE1ha2Ugc3VyZSB1cGRhdGVOYW1lKCkgaXMgY2FsbGVk
IGluIGFkZGl0aW9uIHRvIHVwZGF0ZUlkKCkgd2hlbiBhcHBsaWNhYmxlLgorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNob3VsZFJlZ2lzdGVy
QXNOYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hvdWxkUmVnaXN0ZXJB
c0V4dHJhTmFtZWRJdGVtKToKKworICAgICAgICAgICAgQWRkZWQuIElmIGFuIGVsZW1lbnQgcmV0
dXJucyB0cnVlIGZvciB0aGVzZSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5CisgICAgICAgICAg
ICByZWdpc3RlcmVkIHdpdGggdGhlIGRvY3VtZW50IHdoZW4gdGhlIG5hbWUvaWQgYXR0cmlidXRl
IGNoYW5nZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZU5hbWUpOgorCisgICAgICAgICAgICBSZWdpc3Rl
ci91bnJlZ2lzdGVyIGZyb20gdGhlIGRvY3VtZW50J3MgbmFtZWQgaXRlbSBtYXBzIGFzIGFwcHJv
cHJpYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRl
KToKKworICAgICAgICAgICAgQWRkIHVwZGF0ZU5hbWUoKSBob29rIGluIGFkZGl0aW9uIHRvIHRo
ZSBleGlzdGluZyB1cGRhdGVJZCgpIGhvb2suCisKKyAgICAgICAgKiBkb20vTmFtZWROb2RlTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6c2V0QXR0cmlidXRlcyk6CisK
KyAgICAgICAgICAgIE1ha2Ugc3VyZSB1cGRhdGVOYW1lKCkgaXMgY2FsbGVkIHdoZW4gd2UncmUg
Y2xvbmluZyB0aGUgYXR0cmlidXRlcworICAgICAgICAgICAgZnJvbSBhbm90aGVyIGVsZW1lbnQu
CisKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoKKworICAgICAgICAg
ICAgUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSB0aGF0IGlzIG5vdyBoYW5kbGVkIGJ5IEVsZW1lbnQu
CisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1lZEl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmZvcm1Db250cm9sTmFtZSk6CisKKyAgICAgICAgICAg
IFVzZSBmYXN0R2V0QXR0cmlidXRlKCkgc2luY2Ugd2Ugbm8gbG9uZ2VyIGNhY2hlIHRoZSBuYW1l
LgorCiAyMDExLTEyLTIxICBDaHJpcyBHdWFuICA8Y2hyaXMuZ3VhbkB0b3JjaG1vYmlsZS5jb20u
Y24+CiAKICAgICAgICAgVXBzdHJlYW0gdGhlIE11bHRpcGFydCBmZWF0dXJlIGluIEJsYWNrYmVy
cnkgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDI1MDUzMWYuLjdlNGJiNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJGb2N1c0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC05
MTYsMjMgKzkxNywzMyBAQCB2b2lkIEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93ID0gc2hhZG93Um9vdCgpKQogICAgICAgICBzaGFkb3ct
Pmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAKLSAgICBpZiAoaGFzSUQoKSkgewotICAgICAgICBp
ZiAobV9hdHRyaWJ1dGVNYXApIHsKKyAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKKyAgICAgICAg
aWYgKGhhc0lEKCkpIHsKICAgICAgICAgICAgIEF0dHJpYnV0ZSogaWRJdGVtID0gbV9hdHRyaWJ1
dGVNYXAtPmdldEF0dHJpYnV0ZUl0ZW0oZG9jdW1lbnQoKS0+aWRBdHRyaWJ1dGVOYW1lKCkpOwog
ICAgICAgICAgICAgaWYgKGlkSXRlbSAmJiAhaWRJdGVtLT5pc051bGwoKSkKICAgICAgICAgICAg
ICAgICB1cGRhdGVJZChudWxsQXRvbSwgaWRJdGVtLT52YWx1ZSgpKTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoaGFzTmFtZSgpKSB7CisgICAgICAgICAgICBBdHRyaWJ1dGUqIG5hbWVJdGVtID0g
bV9hdHRyaWJ1dGVNYXAtPmdldEF0dHJpYnV0ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7Cisg
ICAgICAgICAgICBpZiAobmFtZUl0ZW0gJiYgIW5hbWVJdGVtLT5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICB1cGRhdGVOYW1lKG51bGxBdG9tLCBuYW1lSXRlbS0+dmFsdWUoKSk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7Ci0g
ICAgaWYgKGhhc0lEKCkpIHsKLSAgICAgICAgaWYgKG1fYXR0cmlidXRlTWFwKSB7CisgICAgaWYg
KG1fYXR0cmlidXRlTWFwKSB7CisgICAgICAgIGlmIChoYXNJRCgpKSB7CiAgICAgICAgICAgICBB
dHRyaWJ1dGUqIGlkSXRlbSA9IG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGRvY3Vt
ZW50KCktPmlkQXR0cmlidXRlTmFtZSgpKTsKICAgICAgICAgICAgIGlmIChpZEl0ZW0gJiYgIWlk
SXRlbS0+aXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgdXBkYXRlSWQoaWRJdGVtLT52YWx1ZSgp
LCBudWxsQXRvbSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc05hbWUoKSkgeworICAgICAg
ICAgICAgQXR0cmlidXRlKiBuYW1lSXRlbSA9IG1fYXR0cmlidXRlTWFwLT5nZXRBdHRyaWJ1dGVJ
dGVtKEhUTUxOYW1lczo6bmFtZUF0dHIpOworICAgICAgICAgICAgaWYgKG5hbWVJdGVtICYmICFu
YW1lSXRlbS0+aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgdXBkYXRlTmFtZShuYW1lSXRlbS0+
dmFsdWUoKSwgbnVsbEF0b20pOworICAgICAgICB9CiAgICAgfQogCiAgICAgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpAQCAtMTk5Miw0ICsyMDAzLDI4IEBAIGJvb2wgRWxl
bWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIH0KICNlbmRpZgogCit2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWVkSXRlbVJlZ2lz
dHJhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3TmFtZSkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghb2xkTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0ob2xkTmFt
ZSk7CisKKyAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxI
VE1MRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOworfQorCit2
b2lkIEVsZW1lbnQ6OnVwZGF0ZUV4dHJhTmFtZWRJdGVtUmVnaXN0cmF0aW9uKGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQpCit7CisgICAgaWYgKCFk
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW9sZElkLmlzRW1wdHkoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9j
dW1lbnQoKSktPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG9sZElkKTsKKworICAgIGlmICghbmV3SWQu
aXNFbXB0eSgpKQorICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkb2N1bWVudCgp
KS0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBhNjM1ZjA2Li44MzZjN2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAt
MjY1LDYgKzI2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OwogCiAgICAgdm9pZCB1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5ld0lkKTsKKyAgICB2b2lkIHVwZGF0ZU5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpOwogICAgIHZvaWQgd2ls
bE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CiAKICAgICBMYXlvdXRT
aXplIG1pbmltdW1TaXplRm9yUmVzaXppbmcoKSBjb25zdDsKQEAgLTM4MSw2ICszODMsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSB7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVu
ZGVyZXIoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJB
c0V4dHJhTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKCkgY2FsbHMgdGhlIGZv
bGxvd2luZyB0d28gZnVuY3Rpb25zLgogICAgIC8vIFRoZXkgYXJlIHNlcGFyYXRlZCB0byBhbGxv
dyBhIGRpZmZlcmVudCBmbG93IG9mIGNvbnRyb2wgaW4gU3R5bGVkRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZCgpLgogICAgIHZvaWQgcmVjYWxjU3R5bGVJZk5lZWRlZEFmdGVyQXR0cmlidXRlQ2hh
bmdlZChBdHRyaWJ1dGUqKTsKQEAgLTQzNyw2ICs0NDIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlKTsKICNlbmRpZgogCisgICAgdm9p
ZCB1cGRhdGVOYW1lZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpOworICAgIHZvaWQgdXBkYXRlRXh0cmFOYW1l
ZEl0ZW1SZWdpc3RyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld05hbWUpOworCiBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPE5hbWVk
Tm9kZU1hcD4gbV9hdHRyaWJ1dGVNYXA7CiB9OwpAQCAtNTE2LDEyICs1MjQsMjkgQEAgaW5saW5l
IHZvaWQgRWxlbWVudDo6dXBkYXRlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXcKICAgICAgICAgc2NvcGUtPnJlbW92ZUVsZW1lbnRCeUlkKG9sZElk
LCB0aGlzKTsKICAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSkKICAgICAgICAgc2NvcGUtPmFkZEVs
ZW1lbnRCeUlkKG5ld0lkLCB0aGlzKTsKKworICAgIGlmIChzaG91bGRSZWdpc3RlckFzRXh0cmFO
YW1lZEl0ZW0oKSkKKyAgICAgICAgdXBkYXRlRXh0cmFOYW1lZEl0ZW1SZWdpc3RyYXRpb24ob2xk
SWQsIG5ld0lkKTsKK30KKworaW5saW5lIHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSkKK3sKKyAg
ICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG9sZE5hbWUg
PT0gbmV3TmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNob3VsZFJlZ2lzdGVyQXNO
YW1lZEl0ZW0oKSkKKyAgICAgICAgdXBkYXRlTmFtZWRJdGVtUmVnaXN0cmF0aW9uKG9sZE5hbWUs
IG5ld05hbWUpOwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVO
YW1lKG5hbWUpKQogICAgICAgICB1cGRhdGVJZChvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgIGVs
c2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpuYW1lQXR0cikKKyAgICAgICAgdXBkYXRlTmFtZShv
bGRWYWx1ZSwgbmV3VmFsdWUpOwogCiAgICAgLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBjYWxs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIgaGVyZS4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCA4M2Q1ZjAzLi5iN2QxYjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApAQCAtMjQwLDYgKzI0MCwxMiBAQCB2b2lkIE5hbWVk
Tm9kZU1hcDo6c2V0QXR0cmlidXRlcyhjb25zdCBOYW1lZE5vZGVNYXAmIG90aGVyKQogICAgIGlm
IChvbGRJZCB8fCBuZXdJZCkKICAgICAgICAgbV9lbGVtZW50LT51cGRhdGVJZChvbGRJZCA/IG9s
ZElkLT52YWx1ZSgpIDogbnVsbEF0b20sIG5ld0lkID8gbmV3SWQtPnZhbHVlKCkgOiBudWxsQXRv
bSk7CiAKKyAgICBBdHRyaWJ1dGUqIG9sZE5hbWUgPSBnZXRBdHRyaWJ1dGVJdGVtKEhUTUxOYW1l
czo6bmFtZUF0dHIpOworICAgIEF0dHJpYnV0ZSogbmV3TmFtZSA9IG90aGVyLmdldEF0dHJpYnV0
ZUl0ZW0oSFRNTE5hbWVzOjpuYW1lQXR0cik7CisKKyAgICBpZiAob2xkTmFtZSB8fCBuZXdOYW1l
KQorICAgICAgICBtX2VsZW1lbnQtPnVwZGF0ZU5hbWUob2xkTmFtZSA/IG9sZE5hbWUtPnZhbHVl
KCkgOiBudWxsQXRvbSwgbmV3TmFtZSA/IG5ld05hbWUtPnZhbHVlKCkgOiBudWxsQXRvbSk7CisK
ICAgICBjbGVhckF0dHJpYnV0ZXMoKTsKICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBvdGhlci5s
ZW5ndGgoKTsKICAgICBtX2F0dHJpYnV0ZXMucmVzaXplKG5ld0xlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCAyMTk1NWFkLi4wOTM2N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI5NSw2ICsyOTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKKyAgICBib29sIGhhc05hbWUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc05hbWVGbGFnKTsgfQogICAgIGJvb2wgaGFzSUQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc0lERmxhZyk7IH0KICAgICBib29sIGhhc0NsYXNzKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhIYXNDbGFzc0ZsYWcpOyB9CiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKElzQWN0aXZlRmxhZyk7IH0KQEAgLTMwOSw2ICszMTAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENoaWxkTmVl
ZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzTGlua0ZsYWcpOyB9CiAKKyAgICB2b2lkIHNldEhhc05hbWUoYm9vbCBmKSB7IHNl
dEZsYWcoZiwgSGFzTmFtZUZsYWcpOyB9CiAgICAgdm9pZCBzZXRIYXNJRChib29sIGYpIHsgc2V0
RmxhZyhmLCBIYXNJREZsYWcpOyB9CiAgICAgdm9pZCBzZXRIYXNDbGFzcyhib29sIGYpIHsgc2V0
RmxhZyhmLCBIYXNDbGFzc0ZsYWcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKSB7IHNldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KQEAgLTY0NSw2ICs2
NDcsOCBAQCBwcml2YXRlOgogICAgICAgICBIYXNDdXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZUZs
YWcgPSAxIDw8IDI4LAogICAgICAgICBIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyRmxhZyA9IDEg
PDwgMjksCiAKKyAgICAgICAgSGFzTmFtZUZsYWcgPSAxIDw8IDMwLAorCiAjaWYgRU5BQkxFKFNW
RykKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRG
bGFnIHwgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyB8IEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZs
YWcKICNlbHNlCkBAIC02NTIsNyArNjU2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH07CiAK
LSAgICAvLyAyIGJpdHMgcmVtYWluaW5nCisgICAgLy8gMSBiaXQgcmVtYWluaW5nCiAKICAgICBi
b29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYg
bWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7
IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFz
ayk7IH0gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNmJlYTc2ZS4uYzdl
ZTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMTQ1LDYgKzE0NSw5
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6ZGVzdHJveUlubGluZVN0eWxlRGVjbCgpCiAKIHZvaWQg
U3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJl
c2VydmVEZWNscykKIHsKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IEhUTUxOYW1lczo6bmFtZUF0
dHIpCisgICAgICAgIHNldEhhc05hbWUoIWF0dHItPmlzTnVsbCgpKTsKKwogICAgIGlmICghYXR0
ci0+aXNNYXBwZWRBdHRyaWJ1dGUoKSkgewogICAgICAgICBFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGNmNmNjODQuLjE0YmExMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC01Niw1MCArNTYsMTAg
QEAgdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbWF5c2NyaXB0QXR0ciB8fAogICAgICAg
ICBhdHRyLT5uYW1lKCkgPT0gb2JqZWN0QXR0cikgewogICAgICAgICAvLyBEbyBub3RoaW5nLgot
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3TmFtZSA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChpbkRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICAgICAg
SFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KHRoaXMt
PmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZU5hbWVkSXRlbShtX25h
bWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbShuZXdOYW1lKTsKLSAgICAg
ICAgfQotICAgICAgICBtX25hbWUgPSBuZXdOYW1lOwotICAgIH0gZWxzZSBpZiAoaXNJZEF0dHJp
YnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSkgewotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d0lkID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAg
ICAgICAgICBkb2N1bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9pZCk7Ci0gICAgICAgICAg
ICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3SWQpOwotICAgICAgICB9Ci0gICAgICAg
IG1faWQgPSBuZXdJZDsKLSAgICAgICAgLy8gYWxzbyBjYWxsIHN1cGVyY2xhc3MKLSAgICAgICAg
SFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxz
ZQogICAgICAgICBIVE1MUGx1Z0luRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKLXZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKLXsK
LSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1l
bnQoKSk7Ci0gICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAg
ZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgIH0KLQotICAgIEhUTUxQbHVn
SW5FbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxBcHBsZXRF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKLXsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGRvY3VtZW50
LT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJh
TmFtZWRJdGVtKG1faWQpOwotICAgIH0KLQotICAgIEhUTUxQbHVnSW5FbGVtZW50OjpyZW1vdmVk
RnJvbURvY3VtZW50KCk7Ci19Ci0KIGJvb2wgSFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFm
YXN0SGFzQXR0cmlidXRlKGNvZGVBdHRyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVs
ZW1lbnQuaAppbmRleCBkODEzZWUzLi5lNTM4N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5oCkBAIC00NywxMCArNDcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
dXBBcHBsZXQoKSBjb25zdDsKICAgICBib29sIGNhbkVtYmVkSmF2YSgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKLQotICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzRXh0cmFOYW1lZEl0
ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCA0ZDBhMjE1Li5kMGJkMzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTExMSwxMyArMTExLDYg
QEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoYXR0ciwgQ1NTUHJvcGVydHlXaWR0aCwg
IjAiKTsKICAgICAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eUhlaWdodCwg
IjAiKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRy
KSB7Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQt
PnJlbW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVk
SXRlbSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gdmFsdWU7CiAgICAgfSBl
bHNlCiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQpAQCAtMjE5LDkgKzIxMiw2IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKQogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZE5hbWVkSXRlbShtX25hbWUp
OwotCiAgICAgU3RyaW5nIHdpZHRoID0gZ2V0QXR0cmlidXRlKHdpZHRoQXR0cik7CiAgICAgU3Ry
aW5nIGhlaWdodCA9IGdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKTsKICAgICBpZiAoIXdpZHRoLmlz
RW1wdHkoKSB8fCAhaGVpZ2h0LmlzRW1wdHkoKSkgewpAQCAtMjM3LDE0ICsyMjcsNiBAQCB2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICB9CiB9CiAKLXZv
aWQgSFRNTEVtYmVkRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCi17Ci0gICAgaWYgKGRv
Y3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KGRvY3VtZW50KCkpLT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLQotICAgIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLX0KLQogdm9pZCBIVE1M
RW1iZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVz
ZXJ2ZURlY2xzKQogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5oCmluZGV4IDQ0ODVlMDkuLmJkNjc2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5oCkBAIC0zOSw3ICszOSw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmli
dXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwpAQCAtNTcsNiArNTYsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1WYWx1ZVRleHQoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3Rl
ckFzTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDVhOGVjYTMuLmUxYTNm
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTEzMiw5ICsx
MzIsNiBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZE5h
bWVkSXRlbShtX25hbWUpOwotCiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KCk7CiAKICAgICBpZiAoaGFzSUQoKSkKQEAgLTE0Myw5ICsxNDAsNiBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KGRvY3VtZW50KCkpLT5y
ZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLQogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURv
Y3VtZW50KCk7CiAKICAgICBpZiAoaGFzSUQoKSkKQEAgLTM4NCwxNSArMzc4LDcgQEAgdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VibWl0RXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbnJlc2V0QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkucmVzZXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRy
KSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSA9IGF0dHItPnZhbHVlKCk7
Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhU
TUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPnJl
bW92ZU5hbWVkSXRlbShtX25hbWUpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRl
bShuZXdOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBtX25hbWUgPSBuZXdOYW1lOwotICAgIH0g
ZWxzZQorICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCAzMDEy
NWZhLi40MzA4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTEz
MSw2ICsxMzEsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3du
ZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgc3VibWl0KEV2ZW50KiwgYm9v
bCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIEZvcm1T
dWJtaXNzaW9uVHJpZ2dlcik7CiAKICAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0aEZv
cm1BdHRyaWJ1dGUoRWxlbWVudCopOwpAQCAtMTY3LDggKzE2OSw2IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fd2FzTWFsZm9ybWVkOwogICAgIGJvb2wgbV93YXNEZW1vdGVkOwotCi0gICAgQXRv
bWljU3RyaW5nIG1fbmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDQyYTRlNzguLjQ1NjgxODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTMzLDI0ICsxMzMs
NiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBjb21wb3NpdGVBdHRyKSB7CiAgICAg
ICAgIGlmICghcGFyc2VDb21wb3NpdGVPcGVyYXRvcihhdHRyLT52YWx1ZSgpLCBtX2NvbXBvc2l0
ZU9wZXJhdG9yKSkKICAgICAgICAgICAgIG1fY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyOwotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gbmFtZUF0dHIpIHsKLSAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAg
aWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7Ci0gICAg
ICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50
Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlTmFtZWRJ
dGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5ld05hbWUp
OwotICAgICAgICB9Ci0gICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNlIGlmIChp
c0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPih0aGlzLT5kb2N1bWVudCgp
KTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKLSAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRFeHRyYU5hbWVkSXRlbShuZXdJZCk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9pZCA9IG5ld0lkOwotICAgICAgICAvLyBhbHNvIGNhbGwgc3VwZXJjbGFzcwot
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfSBl
bHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
QEAgLTE5NywxMiArMTc5LDYgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphdHRhY2goKQogCiB2
b2lkIEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKLSAgICBpZiAo
ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0g
ICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1lbnQt
PmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgIH0KLQogICAgIC8vIElmIHdlIGhhdmUgYmVl
biBpbnNlcnRlZCBmcm9tIGEgcmVuZGVyZXItbGVzcyBkb2N1bWVudCwKICAgICAvLyBvdXIgbG9h
ZGVyIG1heSBoYXZlIG5vdCBmZXRjaGVkIHRoZSBpbWFnZSwgc28gZG8gaXQgbm93LgogICAgIGlm
ICghbV9pbWFnZUxvYWRlci5pbWFnZSgpKQpAQCAtMjExLDE3ICsxODcsNiBAQCB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZW1vdmVk
RnJvbURvY3VtZW50KCkKLXsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkg
ewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3Vt
ZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0
ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQp
OwotICAgIH0KLQotICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7Ci19Ci0K
IHZvaWQgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiB7CiAg
ICAgaWYgKCFtX2Zvcm0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5k
ZXggOWJlYzlkOC4uNjA2MThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKQEAgLTk4LDEwICs5OCwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9v
bCBkZWVwKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc05hbWVkSXRlbSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4
dHJhTmFtZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCiAjaWYgRU5B
QkxFKE1JQ1JPREFUQSkKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVmFsdWVUZXh0KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwpAQCAtMTA5LDggKzExMSw2IEBAIHByaXZhdGU6
CiAKICAgICBIVE1MSW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKICAgICBIVE1MRm9ybUVsZW1l
bnQqIG1fZm9ybTsKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwotICAgIEF0b21pY1N0cmluZyBt
X2lkOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0b3I7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGE5ZTFmMDQuLmU3
MmU3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0x
MTQsMjcgKzExNCw5IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmVsb2FkQXR0cikK
ICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9h
ZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKGlzRG9jTmFtZWRJ
dGVtKCkgJiYgaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsK
LSAgICAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9j
dW1lbnQqPih0aGlzLT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVO
YW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3
TmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJBdHRyKQorICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBib3JkZXJBdHRyKQogICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZShhdHRyKTsKLSAg
ICBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoaXNE
b2NOYW1lZEl0ZW0oKSAmJiBpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSkgewotICAgICAgICAgICAgSFRNTERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0
PEhUTUxEb2N1bWVudCo+KHRoaXMtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgZG9jdW1lbnQt
PnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4
dHJhTmFtZWRJdGVtKG5ld0lkKTsKLSAgICAgICAgfQotICAgICAgICBtX2lkID0gbmV3SWQ7Ci0g
ICAgICAgIC8vIGFsc28gY2FsbCBzdXBlcmNsYXNzCi0gICAgICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwotICAgIH0gZWxzZQorICAgIGVsc2UK
ICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKQEAgLTM0NiwyNiArMzI4LDExIEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiB2b2lk
IEhUTUxPYmplY3RFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBpZiAoIWluRG9j
dW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGlzRG9jTmFtZWRJdGVtKCkgJiYg
ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0g
ICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1lbnQt
PmFkZEV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgIH0KLQogICAgIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKIH0KIAogdm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgaWYgKGlzRG9jTmFtZWRJdGVtKCkgJiYg
ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7Ci0g
ICAgICAgIGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgZG9jdW1l
bnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKG1faWQpOwotICAgIH0KLQogICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KQEAgLTQ2NiwxMSArNDMzLDExIEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgpCiAgICAgaWYgKGlzTmFt
ZWRJdGVtICE9IHdhc05hbWVkSXRlbSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7
CiAgICAgICAgIEhUTUxEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1l
bnQqPih0aGlzLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGlzTmFtZWRJdGVtKSB7Ci0gICAg
ICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG1fbmFtZSk7Ci0gICAgICAgICAgICBkb2N1
bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obV9pZCk7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRk
TmFtZWRJdGVtKGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGRFeHRyYU5hbWVkSXRlbShnZXRJZEF0dHJpYnV0ZSgpKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAg
ICAgICAgIGRvY3VtZW50LT5yZW1vdmVFeHRyYU5hbWVkSXRlbShtX2lkKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LT5yZW1vdmVOYW1lZEl0ZW0oZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOwor
ICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUV4dHJhTmFtZWRJdGVtKGdldElkQXR0cmlidXRl
KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIG1fZG9jTmFtZWRJdGVtID0gaXNOYW1lZEl0ZW07
CkBAIC01NDQsNyArNTExLDggQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6YXBwZW5kRm9ybURh
dGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MT2JqZWN0RWxlbWVudDo6Zm9ybUNvbnRyb2xOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9uYW1lLmlzTnVsbCgpID8gZW1wdHlBdG9tIDogbV9uYW1lOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSA9IGZhc3RHZXRBdHRyaWJ1dGUobmFtZUF0dHIpOworICAgIHJldHVybiBuYW1l
LmlzTnVsbCgpID8gZW1wdHlBdG9tIDogbmFtZTsKIH0KIAogSFRNTEZvcm1FbGVtZW50KiBIVE1M
T2JqZWN0RWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oCmluZGV4IGRjZWM1Y2YuLmQ1NjY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTEwNyw3ICsxMDcsOSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgdmly
dHVhbCBib29sIHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBpc0RvY05hbWVkSXRlbSgpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlZ2lzdGVy
QXNFeHRyYU5hbWVkSXRlbSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzRG9jTmFtZWRJdGVt
KCk7IH0KKwogICAgIFN0cmluZyBtX2NsYXNzSWQ7CiAgICAgYm9vbCBtX2RvY05hbWVkSXRlbSA6
IDE7CiAgICAgYm9vbCBtX3VzZUZhbGxiYWNrQ29udGVudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXggMmUzM2M2Ni4uN2RhZGZkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtNjgsOSArNjgsNiBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSA9
IDA7CiAKLXByb3RlY3RlZDoKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwotCiBwcml2YXRlOgog
ICAgIG11dGFibGUgU2NyaXB0SW5zdGFuY2UgbV9pbnN0YW5jZTsKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkK
</data>
<flag name="review"
          id="120493"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="120494"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>