<?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>65061</bug_id>
          
          <creation_ts>2011-07-22 20:14:24 -0700</creation_ts>
          <short_desc>REGRESSION: ClickToFlash HTML5 player doesn&apos;t disable screen dimming when full screen</short_desc>
          <delta_ts>2011-12-19 10:34:02 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>73730</dup_id>
          
          <bug_file_loc>http://youtube.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jon">jon</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ap</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441334</commentid>
    <comment_count>0</comment_count>
    <who name="Jon">jon</who>
    <bug_when>2011-07-22 20:14:24 -0700</bug_when>
    <thetext>Using ClickToFlash&apos;s HTML5 player on youtube.com, the system&apos;s screen dimming preference is not disabled while playing full screen video. Recent bug fixes have fixed other bugs with CTF&apos;s player, including the cursor hiding and controller display. This is a regression from Safari 5.0.5 on Snow Leopard that has occurred for all of the 5.1 builds I&apos;ve used in Lion. I don&apos;t know whether this affects 5.1 on SL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441355</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-22 23:44:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/9828140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456355</commentid>
    <comment_count>2</comment_count>
      <attachid>105053</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-08-24 13:16:31 -0700</bug_when>
    <thetext>Created attachment 105053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469922</commentid>
    <comment_count>3</comment_count>
      <attachid>105053</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-19 23:20:45 -0700</bug_when>
    <thetext>Comment on attachment 105053
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm:114
&gt; +    [[m_webView fullScreenWindowController] setIsPlaying:(isPlaying ? YES : NO)];

You shouldn’t need to jump through that hoop to convert from bool -&gt; BOOL.  Does the compiler complain if you pass isPlaying directly?

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:79
&gt; +        DOMWindow* window = m_element-&gt;document()-&gt;domWindow();
&gt; +        if (window) {

We’d typically move the declaration of window in to the condition part of the if statement here, and below.

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:94
&gt; +            window-&gt;addEventListener(eventNames.endedEvent, m_mediaEventListener, true);

Why does the call to addEventListener not require .get() like the calls to removeEventListener above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469924</commentid>
    <comment_count>4</comment_count>
      <attachid>105053</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-09-19 23:27:22 -0700</bug_when>
    <thetext>Comment on attachment 105053
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm:114
&gt;&gt; +    [[m_webView fullScreenWindowController] setIsPlaying:(isPlaying ? YES : NO)];
&gt; 
&gt; You shouldn’t need to jump through that hoop to convert from bool -&gt; BOOL.  Does the compiler complain if you pass isPlaying directly?

No, this was just me being (needlessly) type-specific.  I&apos;ll remove it.

&gt;&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:79
&gt;&gt; +        if (window) {
&gt; 
&gt; We’d typically move the declaration of window in to the condition part of the if statement here, and below.

Yup; will do.

&gt;&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:94
&gt;&gt; +            window-&gt;addEventListener(eventNames.endedEvent, m_mediaEventListener, true);
&gt; 
&gt; Why does the call to addEventListener not require .get() like the calls to removeEventListener above?

Looks like that&apos;s because addEventListener() takes a PassRefPtr&lt;&gt; and removeEventListener() takes a bare pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470095</commentid>
    <comment_count>5</comment_count>
      <attachid>108008</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-09-20 08:55:20 -0700</bug_when>
    <thetext>Created attachment 108008
Update patch to address Mark&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470159</commentid>
    <comment_count>6</comment_count>
      <attachid>108008</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-20 10:38:15 -0700</bug_when>
    <thetext>Comment on attachment 108008
Update patch to address Mark&apos;s comments.

Windows build failure is:


4&gt;WebFullScreenManagerProxyMessageReceiver.obj : error LNK2001: unresolved external symbol &quot;private: void __thiscall WebKit::WebFullScreenManagerProxy::setIsPlaying(bool)&quot; (?setIsPlaying@WebFullScreenManagerProxy@WebKit@@AAEX_N@Z)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470261</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-09-20 13:00:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 108008 [details])
&gt; Windows build failure is:
&gt; 
&gt; 
&gt; 4&gt;WebFullScreenManagerProxyMessageReceiver.obj : error LNK2001: unresolved external symbol &quot;private: void __thiscall WebKit::WebFullScreenManagerProxy::setIsPlaying(bool)&quot; (?setIsPlaying@WebFullScreenManagerProxy@WebKit@@AAEX_N@Z)

I&apos;ll address this and resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471756</commentid>
    <comment_count>8</comment_count>
      <attachid>108374</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-09-22 11:55:33 -0700</bug_when>
    <thetext>Created attachment 108374
Patch

Added stubs for setIsPlaying() to each of the ports which implement WebFullScreenManagerProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523972</commentid>
    <comment_count>9</comment_count>
      <attachid>108374</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 10:23:19 -0800</bug_when>
    <thetext>Comment on attachment 108374
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:148
&gt; +    [self _updatePowerAssertions];

This just scream for KVO (I don&apos;t think we use such fancy cocoaisms in WebKit though). :p

&gt; Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm:114
&gt; +    [[m_webView fullScreenWindowController] setIsPlaying:(isPlaying ? YES : NO)];

As Mark said, I&apos;m surprised you have to do this?  Can&apos;t you just pass isPlaying directly?

&gt; Source/WebKit2/UIProcess/win/WebFullScreenManagerProxyWin.cpp:113
&gt; +    // FIXME: Implement

notImplemented()?

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:78
&gt; +        DOMWindow* window = m_element-&gt;document()-&gt;domWindow();

Do we need to grab this twice?  If not, than these checks could be if (m_element &amp;&amp; window) and we lose an indent level.

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:87
&gt; +    setIsPlaying(isAnyMoviePlaying());

isAnyMoviePlaying() sounds scary... Do hidden movies count as &quot;playing&quot;?  Ones which are display: none, etc?  (certainly I can produce cases where movies play and are not visible to the user) will that interact poorly with this code?

&gt; Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp:201
&gt; +        nextNode = nextNode-&gt;traverseNextNode(m_element.get());

This feels like a for loop, but it might be clearer written in this while style?  I trust your judgemnet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523981</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-12-19 10:33:30 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 108374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108374&amp;action=review
&gt; 

Eric,  thanks for looking at this patch.  Unfortunately, it has been largely (if not entirely) made irrelevant by the fix for: https://bugs.webkit.org/show_bug.cgi?id=73730.

I&apos;ll clear the review bit and close this bug.  Sorry for wasting your time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523983</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-12-19 10:34:02 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 73730 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105053</attachid>
            <date>2011-08-24 13:16:31 -0700</date>
            <delta_ts>2011-09-20 08:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65061-20110824131630.patch</filename>
            <type>text/plain</type>
            <size>16794</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MWJkZTRmM2UzNWJiNmQw
OTBhMDQ4ZGJjMDRiOWRjY2U3MTlkZmQ1Li4zYjRkMzk5ZGM4MjE3MWY1YjI3NDIxNjkzNzlkM2Fj
NjYwNDNhNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDgtMjQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ2xpY2tU
b0ZsYXNoIEhUTUw1IHBsYXllciBkb2Vzbid0IGRpc2FibGUgc2NyZWVuIGRpbW1pbmcgd2hlbiBm
dWxsIHNjcmVlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgcGxheWluZyBzdGF0dXMgb2YgYWxsIHZpZGVvcyB3aGlsZSBpbiBmdWxsLXNjcmVlbiBt
dXN0IGJlIHBhc3NlZCBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAg
ICAgc28gdGhlIGxhdHRlciBjYW4gZGlzYWJsZSBkaXNwbGF5IGFuZCBzeXN0ZW0gc2xlZXAgaWYg
bmVlZHMgYmUuIEEgbmV3IHRlbXBsYXRlIGNsYXNzLCBXZWJFdmVudExpc3RlbmVyLAorICAgICAg
ICBpcyB1c2VkIGJ5IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHRvIGxpc3RlbiBmb3IgcGxheS1zdGF0
ZSBjaGFuZ2UgZXZlbnRzLiBUaG9zZSBldmVudHMgdHJpZ2dlciBhIGNoZWNrIG9mCisgICAgICAg
IHRoZSBwbGF5aW5nIHN0YXRlIG9mIGFsbCBtZWRpYSBlbGVtZW50cyBjb250YWluZWQgYnkgdGhl
IGZ1bGwgc2NyZWVuIGVsZW1lbnQsIGFuZCB0aGF0IHN0YXR1cyBpcyBwYXNzZWQKKyAgICAgICAg
dG8gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBhbmQgV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHNldElzUGxheWlu
ZzpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRJc1BsYXlpbmcpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyKTogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgbGlzdGVuZXIgb2JqZWN0
LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyKTogVGVhciBkb3duIHRoZSBldmVudCBsaXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNldEVsZW1lbnQpOiBSZWdpc3RlciBhbmQgZGVyZWdpc3Rl
ciBmb3IgbWVkaWEgcGxheWJhY2sgZXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENhbGwgbmV3IHNldEVsZW1l
bnQoKSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNl
dElzUGxheWluZyk6IFBhc3MgdGhyb3VnaCB0byBVSVByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjppc0FueU1vdmllUGxheWluZyk6IEl0ZXJhdGUgb3ZlciBj
aGlsZHJlbiBvZiB0aGUgZnVsbHNjcmVlbiBlbGVtZW50LAorICAgICAgICAgICAgY2hlY2tpbmcg
aWYgYW55IGFyZSBwbGF5aW5nIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6aGFuZGxlTWVkaWFFdmVudCk6IENhbGwgbmV3IGlzQW55TW92aWVQ
bGF5aW5nKCkgZnVuY3Rpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkV2ZW50
TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6OldlYkV2
ZW50TGlzdGVuZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6
Om9wZXJhdG9yPT0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50TGlzdGVuZXI6OldlYkV2
ZW50TGlzdGVuZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQpOiBBZGRlZC4KKwogMjAxMS0wOC0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXBhcmUgV0tUZXh0SW5wdXRXaW5kb3dDb250
cm9sbGVyIGZvciB0aGUgbmV3IHRleHQgaW5wdXQgbW9kZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDFhMWM5NGM5
M2IwMzZjOTRiNDU3NDcxZjNlNzRlZWQ0ZDhhZWNiYjQuLjEzYTliYTQ0N2U3NWIzODNhZjQ4ZDMx
YTEyNWQ3ZTA4MzdjN2EzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtOTcsNiArOTcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0Jik7CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAg
ICB2b2lkIGdldEZ1bGxTY3JlZW5SZWN0KFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2b2lkIHNl
dElzUGxheWluZyhib29sKTsKIAogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFBsYXRm
b3JtV2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAw
MDdlMzA5MTZkMWRhNjBlOTJjOTA4NDkxMDExZGFlMTBhMGYwYmE3Li4yZjUzOWU4YjQ0MTdmZGRh
MDI0NDE5MTlkZjk2MTI1NGEyY2M1OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjksNiArMjksNyBAQCBtZXNzYWdlcyAtPiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IHsK
ICAgICBGaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkKICAg
ICBCZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCkKICAgICBGaW5pc2hlZEV4aXRGdWxsU2Ny
ZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQorICAgIFNldElzUGxheWluZyhib29sIGlzUGxh
eWluZykKICAgICBHZXRGdWxsU2NyZWVuUmVjdCgpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHJlY3Qp
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIEVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oCmluZGV4IGJhZDhjN2Y3OGQ4YmMxNWZkOTFmOWYzNmM5NGEzMTQzZDRmM2Nh
MWYuLmQzM2Q2NmEyNjQ4NmJmYjVlYWViN2ZhNDFiNWViNGIzNzU0ZjllODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIEludFJlY3Q7CiAKIC0gKFdLVmll
dyopd2ViVmlldzsKIC0gKHZvaWQpc2V0V2ViVmlldzooV0tWaWV3Kil3ZWJWaWV3OworLSAodm9p
ZClzZXRJc1BsYXlpbmc6KEJPT0wpaXNQbGF5aW5nOwogCiAtICh2b2lkKWVudGVyRnVsbFNjcmVl
bjooTlNTY3JlZW4gKilzY3JlZW47CiAtICh2b2lkKWV4aXRGdWxsU2NyZWVuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tCmluZGV4IGVmZjk2MjI4MzFhM2Y5MzRmYjllNmZmMWU3NWY5Y2NlM2NkZmVm
NzcuLmQyYTBmYTY0ZjUwZTVkODhiZTM1Yjc0NTM5ZGI2ODk4MjZkYmMxZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0KQEAgLTE0MSw2ICsxNDEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogfQogCistICh2b2lkKXNldElzUGxheWluZzoo
Qk9PTClpc1BsYXlpbmcKK3sKKyAgICBpZiAoX2lzUGxheWluZyA9PSBpc1BsYXlpbmcpCisgICAg
ICAgIHJldHVybjsKKworICAgIF9pc1BsYXlpbmcgPSBpc1BsYXlpbmc7CisgICAgW3NlbGYgX3Vw
ZGF0ZVBvd2VyQXNzZXJ0aW9uc107Cit9CisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsg
Tm90aWZpY2F0aW9ucwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0KaW5kZXggMjBlOTJjMDU0Yjc0
M2FkMWQ5NTM0MDIwY2ZkN2MwYWVmZWY4ZDBkOS4uNGI3MWNmNTQ5NTY1MjQ5Y2FhNzhjYmUwYmZm
NGRmY2M5NzMxMzYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbQpAQCAtMTA3LDYgKzEwNywx
MyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmdldEZ1bGxTY3JlZW5SZWN0KFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgcmVjdCA9IFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyXSBnZXRGdWxsU2NyZWVuUmVjdF07CiB9CiAKK3ZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQoreworICAgIGlm
ICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgW1ttX3dlYlZpZXcgZnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJdIHNldElzUGxheWluZzooaXNQbGF5aW5nID8gWUVTIDogTk8pXTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM2OWViYmRkZjJkYjBh
MTM1NWZmYzdlMjg5YjQxNGRhNzUzODMzYTUuLjY4MjIwMDdlZWI1MjU2ZDBiZTg3YjJiY2FiODkw
MzFjMmU0MDFhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3NjUsNiArMTc2NSw3IEBACiAJCUNEQ0E4NURFMTMyQUQwNTMw
MEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RTUxMzJBRDMzMDAwRTk2MURG
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQ0E4NUU2MTMyQUQzMzAwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREQ2NTRBODE0
MDQ1NTU3MDA4RTg3QkYgLyogV2ViRXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJF
dmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQyMTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVw
TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYwMCw2ICsyNjAx
LDcgQEAKIAkJCQlDMENFNzI1ODEyNDdFNERBMDBCQzBFQzQgLyogV2ViUGFnZS5tZXNzYWdlcy5p
biAqLywKIAkJCQlCQzdCNjIxNDEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHku
Y3BwICovLAogCQkJCUJDN0I2MjEzMTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94
eS5oICovLAorCQkJCUNERDY1NEE4MTQwNDU1NTcwMDhFODdCRiAvKiBXZWJFdmVudExpc3RlbmVy
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYlBhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXggMjM3ZmQ0Y2Y2OGUxODUwYWY2MWRh
MGNjZTY3MTcwYjEyMDc2Njk5ZC4uZDUxMDJkNGRhYjI0Y2Q1ZTRjZDkxMTUxM2EzODQ2YTczZjRh
M2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC0zMCwxMSArMzAsMTUgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTQ0LDEyICs0OCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogV2ViRnVsbFNjcmVlbk1hbmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
KFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fbWVkaWFFdmVudExp
c3RlbmVyKFdlYkV2ZW50TGlzdGVuZXI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+OjpjcmVhdGUodGhp
cywgJldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpoYW5kbGVNZWRpYUV2ZW50KSkKIHsKIH0KICAgICAK
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIoKQogewotICAgIAor
ICAgIHNldEVsZW1lbnQoMCk7CiB9CiAKIFdlYkNvcmU6OkVsZW1lbnQqIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyOjplbGVtZW50KCkgCkBAIC01Nyw2ICs2Miw0MCBAQCBXZWJDb3JlOjpFbGVtZW50KiBX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZWxlbWVudCgpCiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQo
KTsgCiB9CiAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNldEVsZW1lbnQoV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudCA9PSBtX2VsZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gYSBuZXcgRWxlbWVudCBpcyBzZXQgYXMgdGhlIGN1
cnJlbnQgZnVsbCBzY3JlZW4gZWxlbWVudCwgcmVnaXN0ZXIgZXZlbnQKKyAgICAvLyBsaXN0ZW5l
cnMgb24gdGhhdCBFbGVtZW50J3Mgd2luZG93LCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMgaW4gbWVk
aWEgcGxheSBzdGF0ZXMuCisgICAgLy8gV2Ugd2lsbCB1c2UgdGhlc2UgZXZlbnRzIHRvIGRldGVy
bWluZSB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCAKKyAgICAvLyBkaXNw
bGF5IHNsZWVwIHRpbWVycyB3aGVuIHBsYXlpbmcgdmlkZW8gaW4gZnVsbCBzY3JlZW4uIE1ha2Ug
c3VyZSB0byB1bnJlZ2lzdGVyCisgICAgLy8gdGhlIGV2ZW50cyBvbiB0aGUgb2xkIGVsZW1lbnQn
cyB3aW5kb3csIGlmIG5lY2Vzc2FyeSwgYXMgd2VsbC4KKyAgICBFdmVudE5hbWVzJiBldmVudE5h
bWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOworCisgICAgaWYgKG1fZWxlbWVudCkgeworICAg
ICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCk7CisgICAgICAgIGlmICh3aW5kb3cpIHsKKyAgICAgICAgICAgIHdpbmRvdy0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzLnBsYXlFdmVudCwgIG1fbWVkaWFFdmVudExpc3RlbmVyLmdl
dCgpLCB0cnVlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzLnBhdXNlRXZlbnQsIG1fbWVkaWFFdmVudExpc3RlbmVyLmdldCgpLCB0cnVlKTsKKyAg
ICAgICAgICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLmVuZGVkRXZl
bnQsIG1fbWVkaWFFdmVudExpc3RlbmVyLmdldCgpLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIG1fZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgc2V0SXNQbGF5aW5nKGlzQW55TW92aWVQ
bGF5aW5nKCkpOworCisgICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBET01XaW5kb3cqIHdp
bmRvdyA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh3
aW5kb3cpIHsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
LnBsYXlFdmVudCwgIG1fbWVkaWFFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHdp
bmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLnBhdXNlRXZlbnQsIG1fbWVkaWFFdmVu
dExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzLmVuZGVkRXZlbnQsIG1fbWVkaWFFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlE
IG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAg
ZGlkUmVjZWl2ZVdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cyk7CkBAIC03NCw3ICsxMTMsNyBAQCBib29sIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQpCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIG1fZWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgc2V0RWxlbWVudChlbGVtZW50KTsKICAgICBtX2luaXRpYWxGcmFtZSA9IG1fZWxl
bWVudC0+c2NyZWVuUmVjdCgpOwogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVu
Q2xpZW50KCkuZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX3BhZ2UuZ2V0KCksIGVsZW1lbnQp
OwogfQpAQCAtMTQxLDYgKzE4MCwzNSBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpkaWRF
eGl0RnVsbFNjcmVlbigpCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRGdWxsU2NyZWVu
UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKIH0KIAordm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQoreworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SXNQbGF5aW5n
KGlzUGxheWluZykpOworfQorCitib29sIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjppc0FueU1vdmll
UGxheWluZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIE5vZGUqIG5leHROb2RlID0gbV9lbGVtZW50LmdldCgpOworICAgIHdoaWxl
IChuZXh0Tm9kZSkgeworICAgICAgICBpZiAobmV4dE5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojp2aWRlb1RhZykgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5leHROb2RlKS0+aXNNZWRpYUVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihuZXh0Tm9kZSk7CisgICAgICAgICAgICBpZiAoIWVs
ZW1lbnQtPnBhdXNlZCgpICYmICFlbGVtZW50LT5lbmRlZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+dHJh
dmVyc2VOZXh0Tm9kZShtX2VsZW1lbnQuZ2V0KCkpOworICAgIH0KKworICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6aGFuZGxlTWVkaWFFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKQoreworICAgIHNldElzUGxheWluZyhp
c0FueU1vdmllUGxheWluZygpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmgKaW5kZXggYTJiOTkyZjhmMWFhNWQwNzY5YzM4MTc0ZTcxZDNjOGFkZGE1
NGI5ZS4uNTkzNzY3NDNkMmVjN2NkN2Y4ZTlhZDZjZTYyOGY1OGI4YmM3ZWRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmgKQEAgLTQwLDcgKzQwLDEwIEBAIGNsYXNzIE1lc3NhZ2VJRDsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZl
bnQ7CitjbGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzAsNiAr
NzMsOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCk7CiAKKyAg
ICB2b2lkIHNldElzUGxheWluZyhib29sKTsKKwogcHJvdGVjdGVkOgogICAgIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyKFdlYlBhZ2UqKTsKIApAQCAtNzcsMTIgKzgyLDE2IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlv
bikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlT2ZMYXllckNsaWVudCgpIHsgfQogICAg
IFdlYkNvcmU6OkludFJlY3QgZ2V0RnVsbFNjcmVlblJlY3QoKTsKKyAgICB2b2lkIHNldEVsZW1l
bnQoV2ViQ29yZTo6RWxlbWVudCopOworICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKTsKKyAgICBib29sIGlz
QW55TW92aWVQbGF5aW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJGdWxsU2Ny
ZWVuTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1f
aW5pdGlhbEZyYW1lOwogICAgIFJlZlB0cjxXZWJQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OkVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRMaXN0
ZW5lcj4gbV9tZWRpYUV2ZW50TGlzdGVuZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFdmVudExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRXZlbnRMaXN0
ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlNWVhOWJjMjkxYzFmOTE0ZjMzMjkxNWJkMzhlZTliN2Y3ZmY1
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRXZlbnRMaXN0ZW5lci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkV2ZW50TGlzdGVuZXJfaAorI2RlZmluZSBXZWJFdmVudExpc3RlbmVyX2gKKworI2luY2x1
ZGUgPFdlYkNvcmUvRXZlbnRMaXN0ZW5lci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFdmVudExpc3RlbmVyQmFzZSA6IHB1
YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBXZWJFdmVudExpc3Rl
bmVyQmFzZSgpIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVy
VHlwZSkgeyB9CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRGVsZWdhdGVDbGFzcz4KK2NsYXNzIFdlYkV2ZW50TGlzdGVuZXIgOiBw
dWJsaWMgV2ViRXZlbnRMaXN0ZW5lckJhc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAo
RGVsZWdhdGVDbGFzczo6KkRlbGVnYXRlRnVuY3Rpb24pKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV2
ZW50TGlzdGVuZXJCYXNlPiBjcmVhdGUoRGVsZWdhdGVDbGFzcyogbywgRGVsZWdhdGVGdW5jdGlv
biBmKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViRXZlbnRMaXN0ZW5lcihvLCBmKSk7IH0KKwor
cHJvdGVjdGVkOgorICAgIFdlYkV2ZW50TGlzdGVuZXIoRGVsZWdhdGVDbGFzcyogbywgRGVsZWdh
dGVGdW5jdGlvbiBmKSA6IG1fb2JqZWN0KG8pLCBtX2Z1bmN0aW9uKGYpIHsgfQorICAgIHZvaWQg
aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYywgV2ViQ29yZTo6
RXZlbnQqIGUpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikoYywgZSk7IH0KKworICAgIERlbGVn
YXRlQ2xhc3MqIG1fb2JqZWN0OworICAgIERlbGVnYXRlRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108008</attachid>
            <date>2011-09-20 08:55:20 -0700</date>
            <delta_ts>2011-09-20 13:00:29 -0700</delta_ts>
            <desc>Update patch to address Mark&apos;s comments.</desc>
            <filename>bug-65061-20110920085523.patch</filename>
            <type>text/plain</type>
            <size>16838</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyZmUwZWY0ZjdkNTM4MDNk
MWZiYjliYjZkMGY3MzUwZDkzYzM1YzI2Li4xMzg5N2Y0N2YxMzJlNTcyNmZhNWMwOWYxMWEzOWVh
MjlmYjUyZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDktMjAgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ2xpY2tU
b0ZsYXNoIEhUTUw1IHBsYXllciBkb2Vzbid0IGRpc2FibGUgc2NyZWVuIGRpbW1pbmcgd2hlbiBm
dWxsIHNjcmVlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgcGxheWluZyBzdGF0dXMgb2YgYWxsIHZpZGVvcyB3aGlsZSBpbiBmdWxsLXNjcmVlbiBt
dXN0IGJlIHBhc3NlZCBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAg
ICAgc28gdGhlIGxhdHRlciBjYW4gZGlzYWJsZSBkaXNwbGF5IGFuZCBzeXN0ZW0gc2xlZXAgaWYg
bmVlZHMgYmUuIEEgbmV3IHRlbXBsYXRlIGNsYXNzLCBXZWJFdmVudExpc3RlbmVyLAorICAgICAg
ICBpcyB1c2VkIGJ5IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHRvIGxpc3RlbiBmb3IgcGxheS1zdGF0
ZSBjaGFuZ2UgZXZlbnRzLiBUaG9zZSBldmVudHMgdHJpZ2dlciBhIGNoZWNrIG9mCisgICAgICAg
IHRoZSBwbGF5aW5nIHN0YXRlIG9mIGFsbCBtZWRpYSBlbGVtZW50cyBjb250YWluZWQgYnkgdGhl
IGZ1bGwgc2NyZWVuIGVsZW1lbnQsIGFuZCB0aGF0IHN0YXR1cyBpcyBwYXNzZWQKKyAgICAgICAg
dG8gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBhbmQgV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHNldElzUGxheWlu
ZzpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRJc1BsYXlpbmcpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyKTogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgbGlzdGVuZXIgb2JqZWN0
LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyKTogVGVhciBkb3duIHRoZSBldmVudCBsaXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNldEVsZW1lbnQpOiBSZWdpc3RlciBhbmQgZGVyZWdpc3Rl
ciBmb3IgbWVkaWEgcGxheWJhY2sgZXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENhbGwgbmV3IHNldEVsZW1l
bnQoKSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNl
dElzUGxheWluZyk6IFBhc3MgdGhyb3VnaCB0byBVSVByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjppc0FueU1vdmllUGxheWluZyk6IEl0ZXJhdGUgb3ZlciBj
aGlsZHJlbiBvZiB0aGUgZnVsbHNjcmVlbiBlbGVtZW50LAorICAgICAgICAgICAgY2hlY2tpbmcg
aWYgYW55IGFyZSBwbGF5aW5nIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6aGFuZGxlTWVkaWFFdmVudCk6IENhbGwgbmV3IGlzQW55TW92aWVQ
bGF5aW5nKCkgZnVuY3Rpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkV2ZW50
TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6OldlYkV2
ZW50TGlzdGVuZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6
Om9wZXJhdG9yPT0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50TGlzdGVuZXI6OldlYkV2
ZW50TGlzdGVuZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQpOiBBZGRlZC4KKwogMjAxMS0wOS0wNyAgQWxleGVpIFN2aXRraW5lICA8YXN2
aXRraW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0
byB0ZXN0IHJ1YmJlci1iYW5kaW5nIG92ZXJoYW5nIGRyYXdpbmcgYWxvbmcgd2l0aCBsYXlvdXQg
dGVzdHMgZm9yIGV4aXN0aW5nIENocm9taXVtIE1hYyBvdmVyaGFuZyBkcmF3aW5nIGluIHRoZSBu
b24tZ3B1IHBhdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAxYTFjOTRjOTNiMDM2Yzk0YjQ1NzQ3MWYzZTc0ZWVk
NGQ4YWVjYmI0Li4xM2E5YmE0NDdlNzViMzgzYWY0OGQzMWExMjVkN2UwODM3YzdhMzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgKQEAgLTk3LDYgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZvaWQgZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCBnZXRGdWxsU2NyZWVuUmVj
dChXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKICAg
ICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIG1fd2ViVmlldzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMDA3ZTMwOTE2ZDFkYTYwZTkyYzkwODQ5
MTAxMWRhZTEwYTBmMGJhNy4uMmY1MzllOGI0NDE3ZmRkYTAyNDQxOTE5ZGY5NjEyNTRhMmNjNTk2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSB7CiAgICAgRmluaXNoZWRFbnRlckZ1bGxT
Y3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpCiAgICAgQmVnYW5FeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbigpCiAgICAgRmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBs
ZXRlZCkKKyAgICBTZXRJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCiAgICAgR2V0RnVsbFNjcmVl
blJlY3QoKSAtPiAoV2ViQ29yZTo6SW50UmVjdCByZWN0KQogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICAgICBFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdDo6
TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCBiYWQ4
YzdmNzhkOGJjMTVmZDkxZjlmMzZjOTRhMzE0M2Q0ZjNjYTFmLi5kMzNkNjZhMjY0ODZiZmI1ZWFl
YjdmYTQxYjVlYjRiMzc1NGY5ZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtNTYsNiAr
NTYsNyBAQCBjbGFzcyBJbnRSZWN0OwogCiAtIChXS1ZpZXcqKXdlYlZpZXc7CiAtICh2b2lkKXNl
dFdlYlZpZXc6KFdLVmlldyopd2ViVmlldzsKKy0gKHZvaWQpc2V0SXNQbGF5aW5nOihCT09MKWlz
UGxheWluZzsKIAogLSAodm9pZCllbnRlckZ1bGxTY3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwog
LSAodm9pZClleGl0RnVsbFNjcmVlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBlZmY5
NjIyODMxYTNmOTM0ZmI5ZTZmZjFlNzVmOWNjZTNjZGZlZjc3Li5kMmEwZmE2NGY1MGU1ZDg4YmUz
NWI3NDUzOWRiNjg5ODI2ZGJjMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xNDEs
NiArMTQxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIF93ZWJWaWV3ID0gd2Vi
VmlldzsKIH0KIAorLSAodm9pZClzZXRJc1BsYXlpbmc6KEJPT0wpaXNQbGF5aW5nCit7CisgICAg
aWYgKF9pc1BsYXlpbmcgPT0gaXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBfaXNQ
bGF5aW5nID0gaXNQbGF5aW5nOworICAgIFtzZWxmIF91cGRhdGVQb3dlckFzc2VydGlvbnNdOwor
fQorCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE5vdGlmaWNhdGlvbnMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5TWFjLm1tCmluZGV4IDIwZTkyYzA1NGI3NDNhZDFkOTUzNDAyMGNmZDdjMGFlZmVm
OGQwZDkuLmZiZTEwOWIxMWMyYzdmYzRiZDlkYTAyOGQ2MjhhNWM5MGJlMjMwOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlNYWMubW0KQEAgLTEwNyw2ICsxMDcsMTMgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQog
ICAgIHJlY3QgPSBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gZ2V0RnVs
bFNjcmVlblJlY3RdOwogfQogCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldElz
UGxheWluZyhib29sIGlzUGxheWluZykKK3sKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAg
cmV0dXJuOworICAgIFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBzZXRJ
c1BsYXlpbmc6aXNQbGF5aW5nXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDY3N2Y5MjIyZDJmYjkyMWJmYjJmYTE0MTExYTlkNTZiMzczMDY3MzYuLjU5ODhmNzc1
MzFiZThlZTliYTRmZTgyMTM4OWM1YjlkNDJmMTE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NzQsNiArMTc3NCw3IEBA
CiAJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RD
QTg1RTUxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUU2MTMyQUQzMzAwMEU5NjFERiAvKiBX
ZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREQ2NTRBODE0MDQ1NTU3MDA4RTg3QkYgLyogV2ViRXZlbnRMaXN0ZW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1l
bnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjYxMiw2ICsyNjEzLDcgQEAKIAkJCQlDMENFNzI1ODEyNDdFNERBMDBCQzBFQzQg
LyogV2ViUGFnZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzdCNjIxNDEyQTQyMTlBMDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwUHJveHkuY3BwICovLAogCQkJCUJDN0I2MjEzMTJBNDIxOUEwMEQxNzRB
NCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovLAorCQkJCUNERDY1NEE4MTQwNDU1NTcwMDhFODdC
RiAvKiBXZWJFdmVudExpc3RlbmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYlBhZ2U7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXgg
MjM3ZmQ0Y2Y2OGUxODUwYWY2MWRhMGNjZTY3MTcwYjEyMDc2Njk5ZC4uMTI4MDRkZmUzOTcxNTRk
OWFkYzI5ZTQ4OWViNjBkMjNjOTVmMzlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBA
IC0zMCwxMSArMzAsMTUgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUlELmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
TWVkaWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTQ0
LDEyICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRnVsbFNjcmVlbk1hbmFnZXI6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
KyAgICAsIG1fbWVkaWFFdmVudExpc3RlbmVyKFdlYkV2ZW50TGlzdGVuZXI8V2ViRnVsbFNjcmVl
bk1hbmFnZXI+OjpjcmVhdGUodGhpcywgJldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpoYW5kbGVNZWRp
YUV2ZW50KSkKIHsKIH0KICAgICAKIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVl
bk1hbmFnZXIoKQogewotICAgIAorICAgIHNldEVsZW1lbnQoMCk7CiB9CiAKIFdlYkNvcmU6OkVs
ZW1lbnQqIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjplbGVtZW50KCkgCkBAIC01Nyw2ICs2MiwzOCBA
QCBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZWxlbWVudCgpCiAgICAg
cmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgCiB9CiAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6
OnNldEVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVu
dCA9PSBtX2VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gYSBuZXcgRWxl
bWVudCBpcyBzZXQgYXMgdGhlIGN1cnJlbnQgZnVsbCBzY3JlZW4gZWxlbWVudCwgcmVnaXN0ZXIg
ZXZlbnQKKyAgICAvLyBsaXN0ZW5lcnMgb24gdGhhdCBFbGVtZW50J3Mgd2luZG93LCBsaXN0ZW5p
bmcgZm9yIGNoYW5nZXMgaW4gbWVkaWEgcGxheSBzdGF0ZXMuCisgICAgLy8gV2Ugd2lsbCB1c2Ug
dGhlc2UgZXZlbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIHNjcmVlbnNh
dmVyIGFuZCAKKyAgICAvLyBkaXNwbGF5IHNsZWVwIHRpbWVycyB3aGVuIHBsYXlpbmcgdmlkZW8g
aW4gZnVsbCBzY3JlZW4uIE1ha2Ugc3VyZSB0byB1bnJlZ2lzdGVyCisgICAgLy8gdGhlIGV2ZW50
cyBvbiB0aGUgb2xkIGVsZW1lbnQncyB3aW5kb3csIGlmIG5lY2Vzc2FyeSwgYXMgd2VsbC4KKyAg
ICBFdmVudE5hbWVzJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOworCisgICAg
aWYgKG1fZWxlbWVudCkgeworICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBtX2VsZW1l
bnQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKSB7CisgICAgICAgICAgICB3aW5kb3ctPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcy5wbGF5RXZlbnQsICBtX21lZGlhRXZlbnRMaXN0ZW5l
ci5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICB3aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcy5wYXVzZUV2ZW50LCBtX21lZGlhRXZlbnRMaXN0ZW5lci5nZXQoKSwgdHJ1ZSk7
CisgICAgICAgICAgICB3aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcy5lbmRl
ZEV2ZW50LCBtX21lZGlhRXZlbnRMaXN0ZW5lci5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtX2VsZW1lbnQgPSBlbGVtZW50OworICAgIHNldElzUGxheWluZyhpc0FueU1v
dmllUGxheWluZygpKTsKKworICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgaWYgKERPTVdp
bmRvdyogd2luZG93ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkgeworICAg
ICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMucGxheUV2ZW50LCAg
bV9tZWRpYUV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAgICAgICAgd2luZG93LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMucGF1c2VFdmVudCwgbV9tZWRpYUV2ZW50TGlzdGVuZXIsIHRy
dWUpOworICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMuZW5k
ZWRFdmVudCwgbV9tZWRpYUV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAgICB9CisgICAgfQor
fQorCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsKICAgICBkaWRSZWNlaXZlV2Vi
RnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRz
KTsKQEAgLTc0LDcgKzExMSw3IEBAIGJvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
RnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6
OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50ID0gZWxlbWVudDsKKyAgICBzZXRF
bGVtZW50KGVsZW1lbnQpOwogICAgIG1faW5pdGlhbEZyYW1lID0gbV9lbGVtZW50LT5zY3JlZW5S
ZWN0KCk7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5lbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fcGFnZS5nZXQoKSwgZWxlbWVudCk7CiB9CkBAIC0xNDEs
NiArMTc4LDM1IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsU2NyZWVu
KCkKICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlckJhY2tn
cm91bmRDb2xvcihDb2xvcjo6YmxhY2spOwogfQogCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpzZXRJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpTZXRJc1BsYXlpbmcoaXNQbGF5aW5nKSk7
Cit9CisKK2Jvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmlzQW55TW92aWVQbGF5aW5nKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Tm9kZSogbmV4dE5vZGUgPSBtX2VsZW1lbnQuZ2V0KCk7CisgICAgd2hpbGUgKG5leHROb2RlKSB7
CisgICAgICAgIGlmIChuZXh0Tm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSAm
JiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV4dE5vZGUpLT5pc01lZGlhRWxlbWVudCgpKSB7Cisg
ICAgICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG5leHROb2RlKTsKKyAgICAgICAgICAgIGlmICghZWxlbWVudC0+cGF1c2Vk
KCkgJiYgIWVsZW1lbnQtPmVuZGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLT50cmF2ZXJzZU5leHROb2Rl
KG1fZWxlbWVudC5nZXQoKSk7CisgICAgfQorCisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpoYW5kbGVNZWRpYUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFdmVudCopCit7CisgICAgc2V0SXNQbGF5aW5nKGlzQW55TW92aWVQbGF5
aW5nKCkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
aAppbmRleCBhMmI5OTJmOGYxYWE1ZDA3NjljMzgxNzRlNzFkM2M4YWRkYTU0YjllLi41OTM3Njc0
M2QyZWM3Y2Q3ZjhlOWFkNmNlNjI4ZjU4YjhiYzdlZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
aApAQCAtNDAsNyArNDAsMTAgQEAgY2xhc3MgTWVzc2FnZUlEOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIEV2
ZW50TGlzdGVuZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyOworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MCw2ICs3Myw4IEBAIHB1Ymxp
YzoKIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQoKTsKIAorICAgIHZvaWQgc2V0SXNQ
bGF5aW5nKGJvb2wpOworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIoV2Vi
UGFnZSopOwogCkBAIC03NywxMiArODIsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3Bvc2VPZkxheWVyQ2xpZW50KCkgeyB9CiAgICAgV2ViQ29yZTo6SW50
UmVjdCBnZXRGdWxsU2NyZWVuUmVjdCgpOworICAgIHZvaWQgc2V0RWxlbWVudChXZWJDb3JlOjpF
bGVtZW50Kik7CisgICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopOworICAgIGJvb2wgaXNBbnlNb3ZpZVBsYXlp
bmcoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbV9pbml0aWFsRnJhbWU7
CiAgICAgUmVmUHRyPFdlYlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpFdmVudExpc3RlbmVyPiBtX21lZGlh
RXZlbnRMaXN0ZW5lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkV2ZW50TGlzdGVuZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFdmVudExpc3RlbmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWU1ZWE5YmMyOTFjMWY5MTRmMzMyOTE1YmQzOGVlOWI3ZjdmZjU5MgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFdmVudExpc3Rl
bmVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXZlbnRMaXN0
ZW5lcl9oCisjZGVmaW5lIFdlYkV2ZW50TGlzdGVuZXJfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9F
dmVudExpc3RlbmVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYkV2ZW50TGlzdGVuZXJCYXNlIDogcHVibGljIFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXIgeworcHVibGljOgorICAgIFdlYkV2ZW50TGlzdGVuZXJCYXNlKCkgOiBF
dmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyJiBv
dGhlcikgeyByZXR1cm4gdGhpcyA9PSAmb3RoZXI7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBEZWxlZ2F0ZUNsYXNzPgorY2xhc3MgV2ViRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJFdmVu
dExpc3RlbmVyQmFzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChEZWxlZ2F0ZUNsYXNz
OjoqRGVsZWdhdGVGdW5jdGlvbikoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkNvcmU6OkV2ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lckJh
c2U+IGNyZWF0ZShEZWxlZ2F0ZUNsYXNzKiBvLCBEZWxlZ2F0ZUZ1bmN0aW9uIGYpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJFdmVudExpc3RlbmVyKG8sIGYpKTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgV2ViRXZlbnRMaXN0ZW5lcihEZWxlZ2F0ZUNsYXNzKiBvLCBEZWxlZ2F0ZUZ1bmN0aW9uIGYp
IDogbV9vYmplY3QobyksIG1fZnVuY3Rpb24oZikgeyB9CisgICAgdm9pZCBoYW5kbGVFdmVudChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjLCBXZWJDb3JlOjpFdmVudCogZSkgeyAo
bV9vYmplY3QtPiptX2Z1bmN0aW9uKShjLCBlKTsgfQorCisgICAgRGVsZWdhdGVDbGFzcyogbV9v
YmplY3Q7CisgICAgRGVsZWdhdGVGdW5jdGlvbiBtX2Z1bmN0aW9uOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108374</attachid>
            <date>2011-09-22 11:55:33 -0700</date>
            <delta_ts>2011-12-19 10:33:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65061-20110922115532.patch</filename>
            <type>text/plain</type>
            <size>19116</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2Njc4NzdjM2YwNTRlZmZh
NDVkZDU5NzkzYzkxYjhlZTM0NjViMTVmLi43MmE1NWIzNDQ0YjlhY2FlYmY1MGMxMzQyYmIyMGNm
ZTMzNmRmODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDgtMjQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ2xpY2tU
b0ZsYXNoIEhUTUw1IHBsYXllciBkb2Vzbid0IGRpc2FibGUgc2NyZWVuIGRpbW1pbmcgd2hlbiBm
dWxsIHNjcmVlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgcGxheWluZyBzdGF0dXMgb2YgYWxsIHZpZGVvcyB3aGlsZSBpbiBmdWxsLXNjcmVlbiBt
dXN0IGJlIHBhc3NlZCBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAg
ICAgc28gdGhlIGxhdHRlciBjYW4gZGlzYWJsZSBkaXNwbGF5IGFuZCBzeXN0ZW0gc2xlZXAgaWYg
bmVlZHMgYmUuIEEgbmV3IHRlbXBsYXRlIGNsYXNzLCBXZWJFdmVudExpc3RlbmVyLAorICAgICAg
ICBpcyB1c2VkIGJ5IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHRvIGxpc3RlbiBmb3IgcGxheS1zdGF0
ZSBjaGFuZ2UgZXZlbnRzLiBUaG9zZSBldmVudHMgdHJpZ2dlciBhIGNoZWNrIG9mCisgICAgICAg
IHRoZSBwbGF5aW5nIHN0YXRlIG9mIGFsbCBtZWRpYSBlbGVtZW50cyBjb250YWluZWQgYnkgdGhl
IGZ1bGwgc2NyZWVuIGVsZW1lbnQsIGFuZCB0aGF0IHN0YXR1cyBpcyBwYXNzZWQKKyAgICAgICAg
dG8gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBhbmQgV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHNldElzUGxheWlu
ZzpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRJc1BsYXlpbmcpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyKTogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgbGlzdGVuZXIgb2JqZWN0
LgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6fldlYkZ1bGxTY3JlZW5N
YW5hZ2VyKTogVGVhciBkb3duIHRoZSBldmVudCBsaXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNldEVsZW1lbnQpOiBSZWdpc3RlciBhbmQgZGVyZWdpc3Rl
ciBmb3IgbWVkaWEgcGxheWJhY2sgZXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENhbGwgbmV3IHNldEVsZW1l
bnQoKSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNl
dElzUGxheWluZyk6IFBhc3MgdGhyb3VnaCB0byBVSVByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjppc0FueU1vdmllUGxheWluZyk6IEl0ZXJhdGUgb3ZlciBj
aGlsZHJlbiBvZiB0aGUgZnVsbHNjcmVlbiBlbGVtZW50LAorICAgICAgICAgICAgY2hlY2tpbmcg
aWYgYW55IGFyZSBwbGF5aW5nIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6aGFuZGxlTWVkaWFFdmVudCk6IENhbGwgbmV3IGlzQW55TW92aWVQ
bGF5aW5nKCkgZnVuY3Rpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkV2ZW50
TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6OldlYkV2
ZW50TGlzdGVuZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lckJhc2U6
Om9wZXJhdG9yPT0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50TGlzdGVuZXI6OldlYkV2
ZW50TGlzdGVuZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQpOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OnNldElzUGxheWluZyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldElzUGxheWluZyk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SXNQbGF5aW5nKToKKyAgICAgICAgQWRkZWQgcG9ydC1z
cGVjaWZpYyBzdHVicyBmb3Igc2V0SXNQbGF5aW5nKCkKKwogMjAxMS0wOS0yMiAgQWxwaGEgTGFt
ICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODA4MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMWExYzk0YzkzYjAzNmM5NGI0NTc0
NzFmM2U3NGVlZDRkOGFlY2JiNC4uMTNhOWJhNDQ3ZTc1YjM4M2FmNDhkMzFhMTI1ZDdlMDgzN2M3
YTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5oCkBAIC05Nyw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICAg
ICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogICAgIHZvaWQgZ2V0RnVs
bFNjcmVlblJlY3QoV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJv
b2wpOwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAgUGxhdGZvcm1XZWJWaWV3KiBt
X3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDAwN2UzMDkxNmQxZGE2
MGU5MmM5MDg0OTEwMTFkYWUxMGEwZjBiYTcuLjJmNTM5ZThiNDQxN2ZkZGEwMjQ0MTkxOWRmOTYx
MjU0YTJjYzU5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgewogICAgIEZpbmlzaGVk
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQogICAgIEJlZ2FuRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb24oKQogICAgIEZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24o
Ym9vbCBjb21wbGV0ZWQpCisgICAgU2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIEdl
dEZ1bGxTY3JlZW5SZWN0KCkgLT4gKFdlYkNvcmU6OkludFJlY3QgcmVjdCkKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShXZWJLaXQ6OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlHdGsu
Y3BwCmluZGV4IDViNWJmMDI0Mjg2MmMxYTk0NjZiYzdiYTdmNzEwMTZhM2MzYzU4ODEuLmZhMmU2
MmVlNDUwZTQxNWJjNDdhZGRjY2I5MDVhN2E5MmVmMGZkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
R3RrLmNwcApAQCAtODEsNiArODEsMTEgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SXNQbGF5
aW5nKGJvb2wgaXNQbGF5aW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaAppbmRleCA3NGU3OTQ3MDQxY2Y5OTg0MjNiZTdkYzlkMTg1ZjBmMDI1
YzMwODY0Li4yYzg0NmNkZWFlNDY0MTRjNGI1MDgyYTU1ZTY3NzFhMWIwZmNjNDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBJbnRSZWN0OwogCiAtIChX
S1ZpZXcqKXdlYlZpZXc7CiAtICh2b2lkKXNldFdlYlZpZXc6KFdLVmlldyopd2ViVmlldzsKKy0g
KHZvaWQpc2V0SXNQbGF5aW5nOihCT09MKWlzUGxheWluZzsKIAogLSAodm9pZCllbnRlckZ1bGxT
Y3JlZW46KE5TU2NyZWVuICopc2NyZWVuOwogLSAodm9pZClleGl0RnVsbFNjcmVlbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5tbQppbmRleCA1ZTIxZjcxYWU1MWEyYTgwMDI1NWRlMTljYzYxNmZkODI2
OWNjMDg4Li5mM2FkM2FhOGMyMWZkODk3MDZiMzdmNDQxYTAxZWMzOGI0Y2IwMmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLm1tCkBAIC0xMzksNiArMTM5LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIH0KIAorLSAodm9pZClzZXRJc1BsYXlp
bmc6KEJPT0wpaXNQbGF5aW5nCit7CisgICAgaWYgKF9pc1BsYXlpbmcgPT0gaXNQbGF5aW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBfaXNQbGF5aW5nID0gaXNQbGF5aW5nOworICAgIFtzZWxm
IF91cGRhdGVQb3dlckFzc2VydGlvbnNdOworfQorCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBt
YXJrIE5vdGlmaWNhdGlvbnMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IDIwZTkyYzA1
NGI3NDNhZDFkOTUzNDAyMGNmZDdjMGFlZmVmOGQwZDkuLjRiNzFjZjU0OTU2NTI0OWNhYTc4Y2Jl
MGJmZjRkZmNjOTczMTM2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0KQEAgLTEwNyw2ICsx
MDcsMTMgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpnZXRGdWxsU2NyZWVuUmVj
dChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIHJlY3QgPSBbW21fd2ViVmlldyBmdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcl0gZ2V0RnVsbFNjcmVlblJlY3RdOwogfQogCit2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldElzUGxheWluZyhib29sIGlzUGxheWluZykKK3sKKyAg
ICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIFtbbV93ZWJWaWV3IGZ1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyXSBzZXRJc1BsYXlpbmc6KGlzUGxheWluZyA/IFlFUyA6IE5P
KV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5UXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlR
dC5jcHAKaW5kZXggYzRhMTNmYWQ4OWUxMTI5YjU4ZjljM2RiNzk4YmIyMjdjN2RmNTUyNi4uODcw
MTkzMzg0YTZkMDBhYmZkZGI5NzQxYmQ3M2Q2MmQwMDg0YzhkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlR
dC5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Z2V0RnVsbFNjcmVlblJlY3QoV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldElzUGxheWlu
Zyhib29sIGlzUGxheWluZykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlXaW4uY3BwCmluZGV4IDg3OGZhMTM0ZTY5ZmZhYzhhNWE0Y2ViOGJiMjU4MDQ3
NmEzMmFlMGEuLjJlNzA3NDYxYmIyOTY3NTNmMjFiZTkwYmM4MGU0YmViMTI2ZWJjNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5V2luLmNwcApAQCAtMTA2LDYgKzEwNiwxMyBAQCB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OmdldEZ1bGxTY3JlZW5SZWN0KFdlYkNvcmU6OkludFJlY3QmIHJl
Y3QpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudAogfQogCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OnNldElzUGxheWluZyhib29sIGlzUGxheWluZykKK3sKKyAgICBpZiAoIW1fd2Vi
VmlldykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY0ZjU4NTJlMjE5NjgwMTZiYmM0MTc4
NmM1NGJlYjBlNWI0Y2ZlM2EuLjE5M2U4OTEyNWQ0ZGM5Y2EwNTM1NzBiMzA2ZGNhYjMyYzA5ZGY1
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE3ODIsNiArMTc4Miw3IEBACiAJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAv
KiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RTUxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
Q0E4NUU2MTMyQUQzMzAwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREQ2NTRBODE0MDQ1NTU3MDA4
RTg3QkYgLyogV2ViRXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFdmVudExpc3Rl
bmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQyMTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNC
OTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyMyw2ICsyNjI0LDcgQEAKIAkJ
CQlDMENFNzI1ODEyNDdFNERBMDBCQzBFQzQgLyogV2ViUGFnZS5tZXNzYWdlcy5pbiAqLywKIAkJ
CQlCQzdCNjIxNDEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwICovLAog
CQkJCUJDN0I2MjEzMTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovLAor
CQkJCUNERDY1NEE4MTQwNDU1NTcwMDhFODdCRiAvKiBXZWJFdmVudExpc3RlbmVyLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IFdlYlBhZ2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJG
dWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXggMjM3ZmQ0Y2Y2OGUxODUwYWY2MWRhMGNjZTY3MTcw
YjEyMDc2Njk5ZC4uMDY3YTQyY2Q3ZDRiYWMwYmFiMzNkMzZmMzFjN2FjZDVhNzMzNmU5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC0zMCwxMSArMzAsMTUgQEAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTQ0LDEyICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogV2ViRnVsbFNjcmVlbk1hbmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fbWVkaWFFdmVudExpc3RlbmVyKFdl
YkV2ZW50TGlzdGVuZXI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+OjpjcmVhdGUodGhpcywgJldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpoYW5kbGVNZWRpYUV2ZW50KSkKIHsKIH0KICAgICAKIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIoKQogewotICAgIAorICAgIHNldEVs
ZW1lbnQoMCk7CiB9CiAKIFdlYkNvcmU6OkVsZW1lbnQqIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpl
bGVtZW50KCkgCkBAIC01Nyw2ICs2Miw0MCBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6ZWxlbWVudCgpCiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgCiB9CiAK
K3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNldEVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudCA9PSBtX2VsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFdoZW4gYSBuZXcgRWxlbWVudCBpcyBzZXQgYXMgdGhlIGN1cnJlbnQgZnVs
bCBzY3JlZW4gZWxlbWVudCwgcmVnaXN0ZXIgZXZlbnQKKyAgICAvLyBsaXN0ZW5lcnMgb24gdGhh
dCBFbGVtZW50J3Mgd2luZG93LCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMgaW4gbWVkaWEgcGxheSBz
dGF0ZXMuCisgICAgLy8gV2Ugd2lsbCB1c2UgdGhlc2UgZXZlbnRzIHRvIGRldGVybWluZSB3aGV0
aGVyIHRvIGRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCAKKyAgICAvLyBkaXNwbGF5IHNsZWVw
IHRpbWVycyB3aGVuIHBsYXlpbmcgdmlkZW8gaW4gZnVsbCBzY3JlZW4uIE1ha2Ugc3VyZSB0byB1
bnJlZ2lzdGVyCisgICAgLy8gdGhlIGV2ZW50cyBvbiB0aGUgb2xkIGVsZW1lbnQncyB3aW5kb3cs
IGlmIG5lY2Vzc2FyeSwgYXMgd2VsbC4KKyAgICBFdmVudE5hbWVzJiBldmVudE5hbWVzID0gV2Vi
Q29yZTo6ZXZlbnROYW1lcygpOworCisgICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBET01X
aW5kb3cqIHdpbmRvdyA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAg
ICAgIGlmICh3aW5kb3cpIHsKKyAgICAgICAgICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzLnBsYXlFdmVudCwgIG1fbWVkaWFFdmVudExpc3RlbmVyLmdldCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLnBh
dXNlRXZlbnQsIG1fbWVkaWFFdmVudExpc3RlbmVyLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAg
IHdpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLmVuZGVkRXZlbnQsIG1fbWVk
aWFFdmVudExpc3RlbmVyLmdldCgpLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
ZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgc2V0SXNQbGF5aW5nKGlzQW55TW92aWVQbGF5aW5nKCkp
OworCisgICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh3aW5kb3cpIHsK
KyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLnBsYXlFdmVu
dCwgIG1fbWVkaWFFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzLnBhdXNlRXZlbnQsIG1fbWVkaWFFdmVudExpc3RlbmVy
LCB0cnVlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
LmVuZGVkRXZlbnQsIG1fbWVkaWFFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgZGlkUmVjZWl2
ZVdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cyk7CkBAIC03NCw3ICsxMTMsNyBAQCBib29sIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpzdXBw
b3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQp
CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIG1fZWxlbWVudCA9IGVsZW1lbnQ7CisgICAg
c2V0RWxlbWVudChlbGVtZW50KTsKICAgICBtX2luaXRpYWxGcmFtZSA9IG1fZWxlbWVudC0+c2Ny
ZWVuUmVjdCgpOwogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50KCku
ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX3BhZ2UuZ2V0KCksIGVsZW1lbnQpOwogfQpAQCAt
MTQxLDYgKzE4MCwzNSBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbFNj
cmVlbigpCiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRGdWxsU2NyZWVuUmVuZGVyZXJC
YWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrKTsKIH0KIAordm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQoreworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SXNQbGF5aW5nKGlzUGxheWlu
ZykpOworfQorCitib29sIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjppc0FueU1vdmllUGxheWluZygp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIE5vZGUqIG5leHROb2RlID0gbV9lbGVtZW50LmdldCgpOworICAgIHdoaWxlIChuZXh0Tm9k
ZSkgeworICAgICAgICBpZiAobmV4dE5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bmV4dE5vZGUpLT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgICAgICBIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5leHROb2RlKTsK
KyAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc1ZpZGVvKCkgJiYgIWVsZW1lbnQtPnBhdXNlZCgp
ICYmICFlbGVtZW50LT5lbmRlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSht
X2VsZW1lbnQuZ2V0KCkpOworICAgIH0KKworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6aGFuZGxlTWVkaWFFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqKQoreworICAgIHNldElzUGxheWluZyhpc0FueU1vdmllUGxheWlu
ZygpKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgK
aW5kZXggYTJiOTkyZjhmMWFhNWQwNzY5YzM4MTc0ZTcxZDNjOGFkZGE1NGI5ZS4uNTkzNzY3NDNk
MmVjN2NkN2Y4ZTlhZDZjZTYyOGY1OGI4YmM3ZWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgK
QEAgLTQwLDcgKzQwLDEwIEBAIGNsYXNzIE1lc3NhZ2VJRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVu
dExpc3RlbmVyOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzAsNiArNzMsOCBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCk7CiAKKyAgICB2b2lkIHNldElzUGxh
eWluZyhib29sKTsKKwogcHJvdGVjdGVkOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBh
Z2UqKTsKIApAQCAtNzcsMTIgKzgyLDE2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwb3NlT2ZMYXllckNsaWVudCgpIHsgfQogICAgIFdlYkNvcmU6OkludFJl
Y3QgZ2V0RnVsbFNjcmVlblJlY3QoKTsKKyAgICB2b2lkIHNldEVsZW1lbnQoV2ViQ29yZTo6RWxl
bWVudCopOworICAgIHZvaWQgaGFuZGxlTWVkaWFFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKTsKKyAgICBib29sIGlzQW55TW92aWVQbGF5aW5n
KCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1faW5pdGlhbEZyYW1lOwog
ICAgIFJlZlB0cjxXZWJQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+
IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcj4gbV9tZWRpYUV2
ZW50TGlzdGVuZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFdmVudExpc3RlbmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRXZlbnRMaXN0ZW5lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlNWVhOWJjMjkxYzFmOTE0ZjMzMjkxNWJkMzhlZTliN2Y3ZmY1OTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRXZlbnRMaXN0ZW5l
ci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV2ZW50TGlzdGVu
ZXJfaAorI2RlZmluZSBXZWJFdmVudExpc3RlbmVyX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvRXZl
bnRMaXN0ZW5lci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJFdmVudExpc3RlbmVyQmFzZSA6IHB1YmxpYyBXZWJDb3JlOjpF
dmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBXZWJFdmVudExpc3RlbmVyQmFzZSgpIDogRXZl
bnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkgeyB9CisgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RGVsZWdhdGVDbGFzcz4KK2NsYXNzIFdlYkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViRXZlbnRM
aXN0ZW5lckJhc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoRGVsZWdhdGVDbGFzczo6
KkRlbGVnYXRlRnVuY3Rpb24pKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJD
b3JlOjpFdmVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV2ZW50TGlzdGVuZXJCYXNl
PiBjcmVhdGUoRGVsZWdhdGVDbGFzcyogbywgRGVsZWdhdGVGdW5jdGlvbiBmKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRXZlbnRMaXN0ZW5lcihvLCBmKSk7IH0KKworcHJvdGVjdGVkOgorICAg
IFdlYkV2ZW50TGlzdGVuZXIoRGVsZWdhdGVDbGFzcyogbywgRGVsZWdhdGVGdW5jdGlvbiBmKSA6
IG1fb2JqZWN0KG8pLCBtX2Z1bmN0aW9uKGYpIHsgfQorICAgIHZvaWQgaGFuZGxlRXZlbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogYywgV2ViQ29yZTo6RXZlbnQqIGUpIHsgKG1f
b2JqZWN0LT4qbV9mdW5jdGlvbikoYywgZSk7IH0KKworICAgIERlbGVnYXRlQ2xhc3MqIG1fb2Jq
ZWN0OworICAgIERlbGVnYXRlRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>