<?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>72783</bug_id>
          
          <creation_ts>2011-11-18 18:19:12 -0800</creation_ts>
          <short_desc>Get rid of WebCore dependencies from TypedArray implementation types</short_desc>
          <delta_ts>2011-11-23 12:41:16 -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>New Bugs</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>506265</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-18 18:19:12 -0800</bug_when>
    <thetext>Get rid of WebCore dependencies from TypedArray implementation types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506266</commentid>
    <comment_count>1</comment_count>
      <attachid>115922</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-18 18:19:59 -0800</bug_when>
    <thetext>Created attachment 115922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506268</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-18 18:20:43 -0800</bug_when>
    <thetext>Needs V8 side to be implemented and i can&apos;t work out how that should be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506275</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 18:33:27 -0800</bug_when>
    <thetext>I&apos;m happy to help.  What needs to be done?  Should I apply this patch and try to make it build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506285</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-18 18:48:53 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m happy to help.  What needs to be done?  Should I apply this patch and try to make it build?

Making it build would be easy.  Making it correct less so, it really needs dslomov to do the v8 side i think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506287</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 18:57:16 -0800</bug_when>
    <thetext>@dslomov: Would you be willing to help Oliver with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506314</commentid>
    <comment_count>6</comment_count>
      <attachid>115922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 20:00:08 -0800</bug_when>
    <thetext>Comment on attachment 115922
Patch

Attachment 115922 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10518300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506318</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-18 20:21:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 115922 [details])
&gt; Attachment 115922 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10518300

Least surprising build failure ever :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507064</commentid>
    <comment_count>8</comment_count>
      <attachid>115922</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-21 10:43:28 -0800</bug_when>
    <thetext>Comment on attachment 115922
Patch

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

I think it is a reasonable approach. Some nits below. Once they are fixed, I&apos;ll be happy to implement a V8 side of these changes.

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WTF::ArrayBufferBinding::poison):

Spec name for this operation is &quot;neuter&quot; (http://dev.w3.org/html5/spec/common-dom-interfaces.html#transferable-objects) - let&apos;s keep it!

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:10650
&gt; +		A70E3252147744E7005E2988 /* CodeGeneratorV8.pm */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; name = CodeGeneratorV8.pm; path = scripts/CodeGeneratorV8.pm; sourceTree = &quot;&lt;group&gt;&quot;; };

CodeGeneratorV8.pm is not used in apple port of webkit - do not reference it from project files.

&gt; Source/WebCore/html/canvas/ArrayBuffer.cpp:141
&gt;          ArrayBufferView* current = m_firstView;

There is no more reason to keep a list of ArrayBufferViews - we should just remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507807</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-22 13:56:13 -0800</bug_when>
    <thetext>Hmm I have thought on this more, and I really do not see a good way to make this approach work for V8. The problem is, V8 bindings does not really have an equivalent of JS* classes to stick an m_binding member on.

For example, JUint8Array is a generated class that represents JSC object corresponding to Uint8Array. V8 just have a generic v8::JSObject and a bunch of callbacks for this. There is no instances of &apos;V8Uint8Array&apos;.

So it looks like the better solution would be this:
- expose the list of views for array buffer on ArrayBuffer class
- ArrayBuffer::transfer shouldn&apos;t attempt to neuter bindings (it should still neuter views by setting everything to zero)
- let the callers to ArrayBuffer (namely SerializedScriptValue) deal with neutering the bindings, iteration over exposed list of views.

I will prepare a patch along these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507858</commentid>
    <comment_count>10</comment_count>
      <attachid>116289</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-22 16:19:51 -0800</bug_when>
    <thetext>Created attachment 116289
Oliver&apos;s patch restructured

Forego trying to sneak any callbacks from WebCore into WTF&apos;s ArrayBuffer.
Instead, return list of neutered views from ArrayBuffer::transfer and let clients (WebCore&apos;s SerializedScriptValue) deal with neutering bindings as they see fit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508055</commentid>
    <comment_count>11</comment_count>
      <attachid>116289</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 04:07:07 -0800</bug_when>
    <thetext>Comment on attachment 116289
Oliver&apos;s patch restructured

Clearing flags on attachment: 116289

Committed r101064: &lt;http://trac.webkit.org/changeset/101064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508056</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 04:07:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508192</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-23 09:26:16 -0800</bug_when>
    <thetext>How does this handle neutering of the binding object?  afaict you&apos;ve simply removed the logic that handled bindings entirely -- what have i missed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508230</commentid>
    <comment_count>14</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 10:53:13 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; How does this handle neutering of the binding object?  afaict you&apos;ve simply removed the logic that handled bindings entirely -- what have i missed?

The neutering will be handled by a caller to ArrayBuffer::transfer, as in

SerializedScriptValue::create(...)
{
    ...
    Vector&lt;ArrayBufferView*&gt; viewsToNeuter;
    arrayBuffer.transfer(..., viewsToNeuter);
    for(view in viewsToNeuter) {
        get a binding for view and neuter it
    }
    ...
}

SerializedScriptValue lives in WebCore and knows all about bindings and JavaScript, so it is in better position to propagate neutering to bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508301</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-23 12:32:07 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; How does this handle neutering of the binding object?  afaict you&apos;ve simply removed the logic that handled bindings entirely -- what have i missed?
&gt; 
&gt; The neutering will be handled by a caller to ArrayBuffer::transfer, as in
&gt; 
&gt; SerializedScriptValue::create(...)
&gt; {
&gt;     ...
&gt;     Vector&lt;ArrayBufferView*&gt; viewsToNeuter;
&gt;     arrayBuffer.transfer(..., viewsToNeuter);
&gt;     for(view in viewsToNeuter) {
&gt;         get a binding for view and neuter it
&gt;     }
&gt;     ...
&gt; }
&gt; 
&gt; SerializedScriptValue lives in WebCore and knows all about bindings and JavaScript, so it is in better position to propagate neutering to bindings.

The thing to be careful of is that you have to neuter all bindings in all worlds that may reference the buffer.

Once again I&apos;ll say that i think this is a poorly conceived API, that will result in substantial programmer confusion in the long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508307</commentid>
    <comment_count>16</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-23 12:41:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; How does this handle neutering of the binding object?  afaict you&apos;ve simply removed the logic that handled bindings entirely -- what have i missed?
&gt; &gt; 
&gt; &gt; The neutering will be handled by a caller to ArrayBuffer::transfer, as in
&gt; &gt; 
&gt; &gt; SerializedScriptValue::create(...)
&gt; &gt; {
&gt; &gt;     ...
&gt; &gt;     Vector&lt;ArrayBufferView*&gt; viewsToNeuter;
&gt; &gt;     arrayBuffer.transfer(..., viewsToNeuter);
&gt; &gt;     for(view in viewsToNeuter) {
&gt; &gt;         get a binding for view and neuter it
&gt; &gt;     }
&gt; &gt;     ...
&gt; &gt; }
&gt; &gt; 
&gt; &gt; SerializedScriptValue lives in WebCore and knows all about bindings and JavaScript, so it is in better position to propagate neutering to bindings.
&gt; 
&gt; The thing to be careful of is that you have to neuter all bindings in all worlds that may reference the buffer.
&gt; 
&gt; Once again I&apos;ll say that i think this is a poorly conceived API, that will result in substantial programmer confusion in the long term.

Which do you think a poorly conceived API? The transfer method on ArrayBuffer or the postMessage transferrable API?

For the transfer method on ArrayBuffer, I think this is the best way forward if you want ArrayBuffer to live in WTF and not depend on WebCore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115922</attachid>
            <date>2011-11-18 18:19:59 -0800</date>
            <delta_ts>2011-11-22 16:19:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72783-20111118181958.patch</filename>
            <type>text/plain</type>
            <size>18755</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTU2MGVlNDA1OTJj
NjVmMTdlZWIwMTQ2OWIyZjgyZDVkNTBhOS4uYTU4NjU0NzgyYzllNGJjNWU1MGU3YTJiYzFkMDU0
OThlMzgzZGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTE4ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBXZWJDb3Jl
IGRlcGVuZGVuY2llcyBmcm9tIFR5cGVkQXJyYXkgaW1wbGVtZW50YXRpb24gdHlwZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzgzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIFdlYkNvcmUg
c3BlY2lmaWMgbG9naWMgZm9yIHBvaXNvbmluZyBUeXBlZCBBcnJheSBpbXBsZW1lbnRhdGlvbnMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjp0
cmFuc2Zlcik6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyQmluZGluZzo6fkFycmF5QnVmZmVy
QmluZGluZyk6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyQmluZGluZzo6QXJyYXlCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5oOgorICAgICAgICAo
V1RGOjpBcnJheUJ1ZmZlckJpbmRpbmc6OnBvaXNvbik6CisgICAgICAgIChXVEY6OkFycmF5QnVm
ZmVyOjphZGRCaW5kaW5nKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXI6OnJlbW92ZUJpbmRp
bmcpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAg
IChXVEY6OkFycmF5QnVmZmVyVmlldzo6cG9pc29uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9B
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhVmlldzo6cG9pc29uKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0ludDE2QXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQzMkFycmF5Lmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvSW50OEFycmF5Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvVWlu
dDE2QXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaDoKKwogMjAxMS0xMS0xOCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBlYXJhbmNlIG9mIGNvbXBv
dW5kIHRyYW5zZm9ybSBhbmltYXRpb25zIHVuZGVyIGFwcHMgbGlua2VkIG9uIFNub3dMZW9wYXJk
IGlzIGluY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGVkYWQ1MWZiNTUxNmM2MGIwMDZjNGY5MTM1NTE0NzIxZWI4Yjky
NmMuLjE3YzU1OTQ1MDdlNWY2OTNiZTdkYmMyYzQ2YWRkMzMxN2NmYWI3NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjQ3
LDYgKzEwNjQ3LDcgQEAKIAkJQTZEMTY5NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Um9vdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAwNUNDQTEzMzBDNEJBMDAwQ0MwQkEgLyogU3BlbGxp
bmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcwMDVDQ0IxMzMwQzRCQTAwMENDMEJBIC8qIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlbGxp
bmdDb3JyZWN0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzBFMzI1MjE0Nzc0NEU3MDA1RTI5ODggLyogQ29kZUdlbmVyYXRvclY4LnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IENvZGVHZW5lcmF0b3JWOC5wbTsgcGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE1MUJENzEyRjE1NThGMDA1QTBG
NjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dENoZWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcx
NUU2NTAxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMg
LyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb2dyZXNzU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc2MDQsNiArMTc2MDUsMTQgQEAKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUE3MEUzMjU0MTQ3NzQ0RUYwMDVFMjk4OCAvKiB2OCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTcwRTMyNTIxNDc3
NDRFNzAwNUUyOTg4IC8qIENvZGVHZW5lcmF0b3JWOC5wbSAqLywKKwkJCSk7CisJCQluYW1lID0g
djg7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNzVFOEI3RjBFMURFMkIw
MDA3RjI0ODEgLyogZmlsdGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xOTQ3Niw2ICsxOTQ4NSw3IEBACiAJCUJDMUEzNzkwMDk3QzZGOTcwMDE5RjNE
OCAvKiBiaW5kaW5ncyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTcwRTMyNTQxNDc3NDRFRjAwNUUyOTg4IC8qIHY4ICovLAogCQkJCUI1RDMxREY3MTFD
RjYwRTUwMDlGMjJCNCAvKiBnZW5lcmljICovLAogCQkJCUJDMUEzNzkzMDk3QzZGQjEwMDE5RjNE
OCAvKiBqcyAqLywKIAkJCQlCQzFBMzc5NDA5N0M2RkM0MDAxOUYzRDggLyogb2JqYyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggODhkYWYzZDdjNjQ2Y2QzNWM1MDE3OGM1Nzk5Yjk0ZjEwNWMyODhmYS4uZTYxNjAwNGUw
MWM0ZmFlNWQyMDljYTU3MTFhYTgwNzliYmRkZjMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTkyNiwxNSArOTI2LDI2
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXBsKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsOyB9XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lk
IHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH1cblxuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9p
bXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyIpOworICAgICAgICBpZiAoJGltcGxUeXBlIGVxICJB
cnJheUJ1ZmZlclZpZXciKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiIG1f
YmluZGluZy5jbGVhcigpO1xuIik7CisgICAgICAgIH0gCisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgfVxuXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIG1faW1w
bDtcbiIpOworICAgICAgICBpZiAoJGltcGxUeXBlIGVxICJBcnJheUJ1ZmZlclZpZXciKSB7Cisg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CisgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIE93blB0cjxXVEY6OkFycmF5QnVmZmVyQmlu
ZGluZz4gbV9iaW5kaW5nO1xuIik7CisgICAgICAgIH0KICAgICB9IGVsc2lmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciJ9KSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwoKSBjb25z
dFxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW1wbENs
YXNzTmFtZSo+KEJhc2U6OmltcGwoKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB9XG4iKTsKICAgICB9CisgICAgaWYgKCRwYXJlbnRDbGFzc05hbWUgZXEgIkpTQXJy
YXlCdWZmZXJWaWV3IikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQg
cG9pc29uKCkgeyBtX2JpbmRpbmcuY2xlYXIoKTsgfVxuIik7CisgICAgfQogCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInByb3RlY3RlZDpcbiIpOwogICAgICMgQ29uc3RydWN0b3IKQEAgLTE1
NTAsMTEgKzE1NjEsNDEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CisgICAgICAgIAorICAgICAgICBpZiAoJHBhcmVudENsYXNzTmFtZSBl
cSAiSlNBcnJheUJ1ZmZlclZpZXciKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOworY2xhc3MgJHtpbXBsVHlwZX1CaW5kaW5nIDogcHVibGljIFdURjo6QXJyYXlCdWZm
ZXJCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcG9pc29uKCkKKyAgICB7Cisg
ICAgICAgIG1fd3JhcHBlci0+cG9pc29uKCk7CisgICAgICAgIG1fd3JhcHBlciA9IDA7CisgICAg
ICAgIFdURjo6QXJyYXlCdWZmZXJCaW5kaW5nOjpwb2lzb24oKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUGFzc093blB0cjwke2ltcGxUeXBlfUJpbmRpbmc+IGNyZWF0ZShXVEY6OkFycmF5QnVmZmVy
VmlldyogaW1wbCwgJGNsYXNzTmFtZSogd3JhcHBlcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgJHtpbXBsVHlwZX1CaW5kaW5nKGltcGwsIHdyYXBwZXIpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgJHtpbXBsVHlwZX1CaW5kaW5nKEFycmF5QnVmZmVyVmlldyogaW1wbCwg
JGNsYXNzTmFtZSogd3JhcHBlcikKKyAgICAgICAgOiBXVEY6OkFycmF5QnVmZmVyQmluZGluZyhp
bXBsLT5idWZmZXIoKS5nZXQoKSkKKyAgICAgICAgLCBtX3dyYXBwZXIod3JhcHBlcikKKyAgICB7
CisgICAgfQorICAgICRjbGFzc05hbWUqIG1fd3JhcHBlcjsKK307CitFTkQKKyAgICAgICAgfQog
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7CisgICAgICAgIGlmICgkcGFy
ZW50Q2xhc3NOYW1lIGVxICJKU0FycmF5QnVmZmVyVmlldyIpIHsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIG1fYmluZGluZyA9ICR7aW1wbFR5cGV9QmluZGluZzo6Y3JlYXRl
KGltcGwoKSwgdGhpcyk7XG4iKTsKKyAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0yMjM2LDIzICsyMjc3LDYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICI7XG59XG4iKTsKICAg
ICB9CiAKLSAgICBpZiAoJHBhcmVudENsYXNzTmFtZSBlcSAiSlNBcnJheUJ1ZmZlclZpZXciIGFu
ZCBJc1R5cGVkQXJyYXlUeXBlKCRpbXBsVHlwZSkpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKLX0KLW5hbWVzcGFjZSBXVEYgewotdm9pZCAke2ltcGxUeXBlfTo6bmV1dGVy
QmluZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotfQotfQotbmFtZXNw
YWNlIFdlYkNvcmUgewotRU5ECi0gICAgfSBlbHNpZiAoJHBhcmVudENsYXNzTmFtZSBlcSAiSlNB
cnJheUJ1ZmZlclZpZXciKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12
b2lkICR7aW1wbFR5cGV9OjpuZXV0ZXJCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7
Ci19Ci1FTkQKLSAgICB9Ci0KLQogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG59XG4iKTsKIAog
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRh
dGFOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmNwcAppbmRl
eCAxOGYyMTBjZWFhNWU0MTZlYTBiNmVlNTU3ZjQ1ZmVlMTdkMDEwODJkLi42ZmFhMTY5YzE5ZDNh
OTE1ZDkxN2IxYzE2MDY1ZTliNDEzYzJjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExOSwyMyArMTIwLDI4IEBAIHVu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3QKICAgICByZXR1
cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgQXJyYXlC
dWZmZXI6OnRyYW5zZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFycmF5QnVm
ZmVyQ29udGVudHMmIHJlc3VsdCwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIEFycmF5QnVmZmVy
Ojp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQpCiB7CiAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBrZWVwQWxpdmUodGhpcyk7CiAKICAgICBpZiAoIW1fY29udGVudHMubV9kYXRh
KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJlc3VsdC5tX2Rh
dGEgPSAwOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBtX2NvbnRlbnRzLnRyYW5zZmVyKHJlc3VsdCk7CiAKKyAgICBWZWN0b3I8QXJyYXlCdWZm
ZXJCaW5kaW5nKj4gYmluZGluZ3M7CisgICAgY29weVRvVmVjdG9yKG1fYmluZGluZ3MsIGJpbmRp
bmdzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJpbmRpbmdzLnNpemUoKTsgaSsrKQor
ICAgICAgICBiaW5kaW5nc1tpXS0+cG9pc29uKCk7CisgICAgbV9iaW5kaW5ncy5jbGVhcigpOwor
CiAgICAgd2hpbGUgKG1fZmlyc3RWaWV3KSB7CiAgICAgICAgIEFycmF5QnVmZmVyVmlldyogY3Vy
cmVudCA9IG1fZmlyc3RWaWV3OwogICAgICAgICByZW1vdmVWaWV3KGN1cnJlbnQpOwotICAgICAg
ICBjdXJyZW50LT5uZXV0ZXIoY29udGV4dCk7CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQog
CiBBcnJheUJ1ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cygpCkBAIC0xODQsNSAr
MTkwLDE2IEBAIHZvaWQgQXJyYXlCdWZmZXI6OnJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3KiB2
aWV3KQogICAgICAgICBtX2ZpcnN0VmlldyA9IHZpZXctPm1fbmV4dFZpZXc7CiAgICAgdmlldy0+
bV9wcmV2VmlldyA9IHZpZXctPm1fbmV4dFZpZXcgPSAwOwogfQorICAgIAorQXJyYXlCdWZmZXJC
aW5kaW5nOjp+QXJyYXlCdWZmZXJCaW5kaW5nKCkKK3sKKyAgICBtX2J1ZmZlci0+cmVtb3ZlQmlu
ZGluZyh0aGlzKTsKK30KKworQXJyYXlCdWZmZXJCaW5kaW5nOjpBcnJheUJ1ZmZlckJpbmRpbmco
QXJyYXlCdWZmZXIqIGJ1ZmZlcikKKyAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKK3sKKyAgICBtX2J1
ZmZlci0+YWRkQmluZGluZyh0aGlzKTsKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0FycmF5QnVmZmVyLmgKaW5kZXggNzQxYmRhMGFmYWFlNWEwZjVmNDBkMzI3YTg1ODNhYzgyZmZh
YjVlOC4uOTRiNDcxNDRmY2RkYjljMzU3NzBkZTA1ZWViNDU3NGNkMjBhNjIyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5oCkBAIC0yNiwxNSArMjYsOSBAQAogI2lm
bmRlZiBBcnJheUJ1ZmZlcl9oCiAjZGVmaW5lIEFycmF5QnVmZmVyX2gKIAorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi19CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC03Niw2ICs3MCwxNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2l6
ZUluQnl0ZXM7CiB9OwogCitjbGFzcyBBcnJheUJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQmluZGluZyk7CitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIHBvaXNvbigpIHsgbV9idWZmZXIgPSAwOyB9CisgICAgdmlydHVhbCB+QXJyYXlCdWZmZXJC
aW5kaW5nKCk7Citwcm90ZWN0ZWQ6CisgICAgQXJyYXlCdWZmZXJCaW5kaW5nKEFycmF5QnVmZmVy
Kik7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2J1ZmZlcjsKK307CisKIGNsYXNzIEFycmF5
QnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwpAQCAtOTAsMTAgKzk0LDIwIEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShpbnQgYmVnaW4sIGludCBlbmQpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGludCBiZWdpbikgY29uc3Q7
CiAKKyAgICB2b2lkIGFkZEJpbmRpbmcoQXJyYXlCdWZmZXJCaW5kaW5nKiBiaW5kaW5nKQorICAg
IHsKKyAgICAgICAgbV9iaW5kaW5ncy5hZGQoYmluZGluZyk7CisgICAgfQorCisgICAgdm9pZCBy
ZW1vdmVCaW5kaW5nKEFycmF5QnVmZmVyQmluZGluZyogYmluZGluZykKKyAgICB7CisgICAgICAg
IG1fYmluZGluZ3MucmVtb3ZlKGJpbmRpbmcpOworICAgIH0KKwogICAgIHZvaWQgYWRkVmlldyhB
cnJheUJ1ZmZlclZpZXcqKTsKICAgICB2b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZmZXJWaWV3Kik7
CiAKLSAgICB2b2lkIHRyYW5zZmVyKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBB
cnJheUJ1ZmZlckNvbnRlbnRzJiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wg
dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogCiAgICAgfkFycmF5QnVmZmVyKCkgeyB9
CiAKQEAgLTEwNCw2ICsxMTgsOCBAQCBwcml2YXRlOgogCiAgICAgQXJyYXlCdWZmZXJDb250ZW50
cyBtX2NvbnRlbnRzOwogICAgIEFycmF5QnVmZmVyVmlldyogbV9maXJzdFZpZXc7CisgICAgdHlw
ZWRlZiBIYXNoU2V0PEFycmF5QnVmZmVyQmluZGluZyo+IEJpbmRpbmdTZXQ7CisgICAgQmluZGlu
Z1NldCBtX2JpbmRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA2YWRlM2E2NmRiNzE5
MWU5MjZiZjczMWViZTQ0OGMzM2Y4MTRiZDc4Li40NmQwMzU5MjQwMGYxNWEyYzRhNTRkOWEwMzYy
MTg0NjM3ZGYyYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJh
eUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVm
ZmVyVmlldy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFycmF5QnVmZmVyVmlldzo6Y2Fs
Y3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKGludCBzdGFydCwgaW50IGVuZCwgdW5zaWduZWQgYXJyYQog
ICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOwogfQogCi12
b2lkIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKQordm9pZCBBcnJheUJ1ZmZlclZpZXc6OnBvaXNvbigpCiB7CiAgICAgbV9idWZmZXIgPSAw
OwogICAgIG1fYnl0ZU9mZnNldCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IGNiZDQ0MTgwZjY1M2EwZThjNmQzNDljOGMxN2QzMDFlY2I5
ZDMyY2UuLjRjMThiMmEwYzIwODJkNTA0MTUxMzQ0YjYzMWFlYzUyNDQ5ZTdiOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5oCkBAIC0xMTgsNyArMTE4
LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZm
ZXJWaWV3PiB7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1l
bnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBwb2lzb24o
KTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mgc3Rv
cmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCiAgICAgdm9pZCogbV9iYXNlQWRkcmVzczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmNwcAppbmRleCA2YzI4NjA4ZGZmNzM1MTE0
ODBkYjY1NjdjYmQ5ODljMTRjNjQzNTAwLi40MmZkZjliYzA0NzhhOGJkMjQ3ZjhhMzQ1ZTc2NDUx
MjY4Y2I5ODJjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuY3BwCkBAIC0y
MzYsMTEgKzIzNiwxMCBAQCB2b2lkIERhdGFWaWV3OjpzZXRGbG9hdDY0KHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIGRvdWJsZSB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sCiAgICAgc2V0RGF0YTxkb3Vi
bGU+KGJ5dGVPZmZzZXQsIHZhbHVlLCBsaXR0bGVFbmRpYW4sIGVjKTsKIH0KIAotdm9pZCBEYXRh
Vmlldzo6bmV1dGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFW
aWV3Ojpwb2lzb24oKQogewotICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVyKGNvbnRleHQpOwor
ICAgIEFycmF5QnVmZmVyVmlldzo6cG9pc29uKCk7CiAgICAgbV9ieXRlTGVuZ3RoID0gMDsKLSAg
ICBuZXV0ZXJCaW5kaW5nKGNvbnRleHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
RGF0YVZpZXcuaAppbmRleCA4MzNlMDliNmZjNGU2OTViMjQ5MWRkZjc3YjJjN2FiNWQyOWZhMzMy
Li44ZDUzYjc2ZWEwNjllOTBiM2VjMjg2YmNmNmZjMWQzN2EyMmJjOWIyIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKQEAgLTc0LDggKzc0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBkb3VibGUgdmFsdWUsIGJvb2wgbGl0
dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgbmV1dGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2b2lkIG5ldXRlckJpbmRp
bmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBwb2lzb24oKTsK
IAogcHJpdmF0ZToKICAgICBEYXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0Zsb2F0MzJBcnJheS5oCmluZGV4IDgyNzE1MGE3NTFmOWNjMWU3NDVmZjBjOTIwYjFl
MWFjY2EyYWI0NGMuLmNhMWExMzk3ZDQwNWFiNTc1YzdlZGRhMGM3MTZjODFiYmJhOTkxYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5oCkBAIC02MCw5ICs2MCw2
IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0
YXJ0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0
YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgbmV1dGVyQmluZGlu
ZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KIHByaXZhdGU6CiAgICAgRmxv
YXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxv
YXQ2NEFycmF5LmgKaW5kZXggYWYxYjc1MTVhYzAxYWRhODExYTM3MjgyYzVjZTVmMDY0ZDk2Y2U4
ZC4uNTY2MjRjNmIzOTlmNzQ3NmJhOGU1OTNmYTg1MzA0NTQ3NDZjMzIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmgKQEAgLTYwLDkgKzYwLDYgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0
OwogICAgIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBuZXV0ZXJCaW5kaW5nKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogcHJpdmF0ZToKICAgICBGbG9hdDY0QXJyYXko
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmgKaW5kZXggMWU3NzNh
YTZjNTEyZDZmODQ0MzY5NWY2ZmEwNmE4M2ZkNzJjYTU2NS4uMDZmYWY5ZWJjNzg1NDc4NmM3MTU4
ZDYzNjkxNDg5Yzc4OWYzNWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvSW50MTZBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJy
YXkuaApAQCAtNDUsOSArNDUsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJbnQxNkFycmF5
PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW50MTZBcnJheT4g
c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIHZv
aWQgbmV1dGVyQmluZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KIHBy
aXZhdGU6CiAgICAgSW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9JbnQzMkFycmF5LmgKaW5kZXggYjQ0MzdhZTI3Yzg2ZWQ0ZmU2MDQyNTc3YzAxYTk1
ZmY2MTY1YWExYS4uZDJiMWU3NjM4MWE4Zjk1OTBhNDE3YWIxMTg4YmY3MjcxMzI4ZDQwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaApAQCAtNDQsOSArNDQsNiBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgbmV1dGVyQmluZGluZyhXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KIHByaXZhdGU6CiAgICAgSW50MzJBcnJheShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50
OEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaAppbmRleCBk
MWVmYWI1MTkzZWViZjIyNTc2OWFiMWZjNWFjNjFjZDc1OWYyODZmLi5lMzZkMWJiZjFmMzQ4NDk3
OWZkOTJhZTVmNTNhZWE2MDNiMGFmMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9JbnQ4QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4
QXJyYXkuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJbnQ4QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+
IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICB2
b2lkIG5ldXRlckJpbmRpbmcoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiBw
cml2YXRlOgogICAgIEludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9VaW50MTZBcnJheS5oCmluZGV4IDg3ODA4MjkzZDZmZDA0NmMwYzUxOWRiODYyZWRi
MTA5MjMwZjExNTYuLjNiYjFjZTMzY2ViMGJhY2Y0OTI1N2U5ZDQwZmEzZDg4NWQyMjIzYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaApAQCAtNDYsOSArNDYsNiBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQs
IGludCBlbmQpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBuZXV0ZXJCaW5kaW5nKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogcHJpdmF0ZToKICAgICBVaW50MTZB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9V
aW50MzJBcnJheS5oCmluZGV4IDQzOTJhYWI3MDJiOWM2NGY0ZjBiY2Q2MWY0Nzg2YThkNTY3YmQ2
NzAuLjU1NzhkMDdlY2I0ODU3M2ZkMDRhNmQ4Yzc3MjJkZGUzZjk2MmI3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBuZXV0ZXJCaW5kaW5nKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogcHJpdmF0ZToKICAgICBVaW50MzJBcnJheShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9VaW50OEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmgK
aW5kZXggMDdmZGYzYzZlMmViMWZjYzg4ODkyOWQxZjJhNWZiYjliMWUwYmIxMC4uNmU5NDVlNzBm
YTY5ZmJjMmE0ZDAyMGVkZWI5YmU5MWQ3ZDJhNmFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQ4QXJyYXkuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJvdGVj
dGVkOgotICAgIHZvaWQgbmV1dGVyQmluZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7Ci0KIHByaXZhdGU6CiAgICAgVWludDhBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0
LAo=
</data>
<flag name="commit-queue"
          id="114969"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116289</attachid>
            <date>2011-11-22 16:19:51 -0800</date>
            <delta_ts>2011-11-23 04:07:07 -0800</delta_ts>
            <desc>Oliver&apos;s patch restructured</desc>
            <filename>72783.patch</filename>
            <type>text/plain</type>
            <size>13555</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OGJjZGZjLi5jZTc5YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMTEtMjIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBHZXQgcmlkIG9mIFdlYkNvcmUgZGVwZW5kZW5jaWVzIGZyb20gVHlwZWRBcnJheSBpbXBs
ZW1lbnRhdGlvbiB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzI3ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgV2ViQ29yZSBzcGVjaWZpYyBsb2dpYyBmb3IgbmV1dGVyaW5nIFR5cGVk
IEFycmF5IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogaHRt
bC9jYW52YXMvQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV1RGOjpBcnJheUJ1ZmZlcjo6dHJh
bnNmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6QXJyYXlCdWZm
ZXJWaWV3OjpuZXV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFWaWV3OjpuZXV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5Lmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvSW50MTZBcnJheS5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9JbnQ4QXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
VWludDhBcnJheS5oOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDg4ZGFmM2QuLjQ5Nzlh
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0yMjM2LDIzICsyMjM2LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICI7XG59XG4iKTsKICAgICB9CiAKLSAgICBp
ZiAoJHBhcmVudENsYXNzTmFtZSBlcSAiSlNBcnJheUJ1ZmZlclZpZXciIGFuZCBJc1R5cGVkQXJy
YXlUeXBlKCRpbXBsVHlwZSkpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsK
LX0KLW5hbWVzcGFjZSBXVEYgewotdm9pZCAke2ltcGxUeXBlfTo6bmV1dGVyQmluZGluZyhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotfQotfQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotRU5ECi0gICAgfSBlbHNpZiAoJHBhcmVudENsYXNzTmFtZSBlcSAiSlNBcnJheUJ1ZmZlclZp
ZXciKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12b2lkICR7aW1wbFR5
cGV9OjpuZXV0ZXJCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Ci19Ci1FTkQKLSAg
ICB9Ci0KLQogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG59XG4iKTsKIAogICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggODBhOGJhYi4uNDJhNmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI3MDEsMjggKzI3MDEsNiBAQCBFTkQK
IAogICAgIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwg
JGNsYXNzTmFtZSwgJG5hdGl2ZVR5cGUsICRzZXJpYWxpemVkQXR0cmlidXRlKTsKIAotICAgIGlm
IChJc1N1YlR5cGUoJGRhdGFOb2RlLCAiQXJyYXlCdWZmZXJWaWV3IikgJiYgSXNUeXBlZEFycmF5
VHlwZSgkaW50ZXJmYWNlTmFtZSkgJiYgbm90ICRpbnRlcmZhY2VOYW1lIGVxICJBcnJheUJ1ZmZl
clZpZXciKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgfQotICAg
IG5hbWVzcGFjZSBXVEYgewotICAgIHZvaWQgJHtuYXRpdmVUeXBlfTo6bmV1dGVyQmluZGluZyhX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYm91bmQgPSBXZWJDb3JlOjp0b1Y4KHRoaXMpOwotICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdChib3VuZC5Bczx2ODo6T2JqZWN0PigpKTsKLSAgICAgICAgb2Jq
ZWN0LT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoMCwgdjg6OmtFeHRl
cm5hbEJ5dGVBcnJheSwgMCk7Ci0gICAgfQotICAgIH0KLSAgICBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1FTkQKLSAgICB9IGVsc2lmIChJc1N1YlR5cGUoJGRhdGFOb2RlLCAiQXJyYXlCdWZmZXJWaWV3
IikgJiYgbm90ICRpbnRlcmZhY2VOYW1lIGVxICJBcnJheUJ1ZmZlclZpZXciKSB7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgdm9pZCAke25hdGl2ZVR5cGV9OjpuZXV0
ZXJCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBib3VuZCA9IHRvVjgodGhpcyk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KGJvdW5kLkFzPHY4OjpPYmplY3Q+KCkpOwotICAgICAgICBvYmplY3QtPlNl
dEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YSgwLCB2ODo6a0V4dGVybmFsQnl0
ZUFycmF5LCAwKTsKLSAgICB9Ci1FTkQKLSAgICB9Ci0KICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogCiB2b2lkICR7Y2xhc3NOYW1lfTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuY3BwCmluZGV4IDE4ZjIxMGMu
LjM4ZGRhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAK
QEAgLTI2LDExICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTExOSwxNCArMTE3LDEzIEBAIHVuc2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBp
bmRleCkgY29uc3QKICAgICByZXR1cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0
aCk7CiB9CiAKLXZvaWQgQXJyYXlCdWZmZXI6OnRyYW5zZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitib29sIEFycmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1
bHQsIFZlY3RvcjxBcnJheUJ1ZmZlclZpZXcqPiYgbmV1dGVyZWRWaWV3cykKIHsKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGtlZXBBbGl2ZSh0aGlzKTsKIAogICAgIGlmICghbV9jb250ZW50cy5t
X2RhdGEpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmVzdWx0
Lm1fZGF0YSA9IDA7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIG1fY29udGVudHMudHJhbnNmZXIocmVzdWx0KTsKQEAgLTEzNCw4ICsxMzEsMTAg
QEAgdm9pZCBBcnJheUJ1ZmZlcjo6dHJhbnNmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgQXJyYXlCdWZmZXJDb250ZW50cyYKICAgICB3aGlsZSAobV9maXJzdFZpZXcpIHsKICAg
ICAgICAgQXJyYXlCdWZmZXJWaWV3KiBjdXJyZW50ID0gbV9maXJzdFZpZXc7CiAgICAgICAgIHJl
bW92ZVZpZXcoY3VycmVudCk7Ci0gICAgICAgIGN1cnJlbnQtPm5ldXRlcihjb250ZXh0KTsKKyAg
ICAgICAgY3VycmVudC0+bmV1dGVyKCk7CisgICAgICAgIG5ldXRlcmVkVmlld3MuYXBwZW5kKGN1
cnJlbnQpOwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogQXJyYXlCdWZmZXJDb250ZW50
czo6fkFycmF5QnVmZmVyQ29udGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyLmgKaW5kZXggNzQxYmRhMC4uNzE1MzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BcnJheUJ1ZmZlci5oCkBAIC0yNiwxNSArMjYsMTAgQEAKICNpZm5kZWYgQXJyYXlCdWZm
ZXJfaAogI2RlZmluZSBBcnJheUJ1ZmZlcl9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotfQorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTkzLDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKICAgICB2b2lkIHJlbW92ZVZpZXcoQXJyYXlCdWZm
ZXJWaWV3Kik7CiAKLSAgICB2b2lkIHRyYW5zZmVyKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBcnJheUJ1ZmZlckNvbnRlbnRzJiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwor
ICAgIGJvb2wgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYsIFZlY3RvcjxBcnJheUJ1ZmZl
clZpZXcqPiYgbmV1dGVyZWRWaWV3cyk7CiAKICAgICB+QXJyYXlCdWZmZXIoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNmFk
ZTNhNi4uYjgxZmNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJy
YXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1
ZmZlclZpZXcuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBcnJheUJ1ZmZlclZpZXc6OmNh
bGN1bGF0ZU9mZnNldEFuZExlbmd0aChpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmEK
ICAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0YXJ0KTsKIH0KIAot
dm9pZCBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQogewogICAgIG1fYnVmZmVyID0g
MDsKICAgICBtX2J5dGVPZmZzZXQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
cnJheUJ1ZmZlclZpZXcuaAppbmRleCBjYmQ0NDE4Li4xOTgzYTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMTE4LDcgKzExOCw3IEBAIGNs
YXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4g
ewogICAgICAgICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51
bUVsZW1lbnRzKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CiAKICAg
ICAvLyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBs
dXMgdGhlIGJ5dGUgb2Zmc2V0LgogICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9EYXRhVmlldy5jcHAKaW5kZXggNmMyODYwOC4uM2U1NWQzNyAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmNwcApAQCAtMjM2LDExICsyMzYsMTAgQEAg
dm9pZCBEYXRhVmlldzo6c2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBkb3VibGUgdmFs
dWUsIGJvb2wgbGl0dGxlRW5kaWFuLAogICAgIHNldERhdGE8ZG91YmxlPihieXRlT2Zmc2V0LCB2
YWx1ZSwgbGl0dGxlRW5kaWFuLCBlYyk7CiB9CiAKLXZvaWQgRGF0YVZpZXc6Om5ldXRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBEYXRhVmlldzo6bmV1dGVyKCkKIHsK
LSAgICBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcihjb250ZXh0KTsKKyAgICBBcnJheUJ1ZmZlclZp
ZXc6Om5ldXRlcigpOwogICAgIG1fYnl0ZUxlbmd0aCA9IDA7Ci0gICAgbmV1dGVyQmluZGluZyhj
b250ZXh0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
RGF0YVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKaW5kZXgg
ODMzZTA5Yi4uZjFjMjRiNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCkBA
IC03NCw4ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsb2F0NjQodW5zaWduZWQgYnl0
ZU9mZnNldCwgZG91YmxlIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIG5ldXRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Ci0gICAgdm9pZCBuZXV0ZXJCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CiAKIHByaXZhdGU6CiAgICAgRGF0YVZpZXco
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQz
MkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaAppbmRl
eCA4MjcxNTBhLi5jYTFhMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9GbG9hdDMyQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMy
QXJyYXkuaApAQCAtNjAsOSArNjAsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxGbG9hdDMy
QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CiAKLXByb3RlY3RlZDoK
LSAgICB2b2lkIG5ldXRlckJpbmRpbmcoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwotCiBwcml2YXRlOgogICAgIEZsb2F0MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oCmluZGV4IGFmMWI3NTEuLjU2NjI0YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oCkBAIC02MCw5ICs2
MCw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50
IHN0YXJ0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gc3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgbmV1dGVyQmlu
ZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KIHByaXZhdGU6CiAgICAg
RmxvYXQ2NEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAogICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvSW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5o
CmluZGV4IDFlNzczYWEuLjA2ZmFmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDE2QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQx
NkFycmF5LmgKQEAgLTQ1LDkgKzQ1LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW50MTZB
cnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEludDE2QXJy
YXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAg
ICB2b2lkIG5ldXRlckJpbmRpbmcoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwot
CiBwcml2YXRlOgogICAgIEludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvSW50MzJBcnJheS5oCmluZGV4IGI0NDM3YWUuLmQyYjFlNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmgKQEAgLTQ0LDkgKzQ0LDYgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIG5ldXRlckJpbmRpbmcoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiBwcml2YXRlOgogICAgIEludDMyQXJyYXkoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmgKaW5kZXggZDFlZmFi
NS4uZTM2ZDFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFy
cmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmgKQEAgLTQ2
LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShp
bnQgc3RhcnQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW50OEFycmF5PiBzdWJhcnJheShpbnQg
c3RhcnQsIGludCBlbmQpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBuZXV0ZXJCaW5k
aW5nKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogcHJpdmF0ZToKICAgICBJ
bnQ4QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9VaW50MTZBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2
QXJyYXkuaAppbmRleCA4NzgwODI5Li4zYmIxY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQxNkFycmF5LmgKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8VWludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxVaW50MTZBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJv
dGVjdGVkOgotICAgIHZvaWQgbmV1dGVyQmluZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Ci0KIHByaXZhdGU6CiAgICAgVWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaAppbmRleCA0Mzky
YWFiLi41NTc4ZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50
MzJBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmgK
QEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gc3Vi
YXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQg
bmV1dGVyQmluZGluZyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KIHByaXZh
dGU6CiAgICAgVWludDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhBcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDhBcnJheS5oCmluZGV4IDA3ZmRmM2MuLjZlOTQ1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmgKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIG5ldXRlckJpbmRpbmcoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiBwcml2YXRlOgogICAgIFVpbnQ4QXJyYXkoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDlhN2VjMS4u
YWJjNGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAx
MS0xMS0yMiAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAgICAgIEdl
dCByaWQgb2YgV2ViQ29yZSBkZXBlbmRlbmNpZXMgZnJvbSBUeXBlZEFycmF5IGltcGxlbWVudGF0
aW9uIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03Mjc4MworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHNyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwOiBXZWJDb3JlIHJlcGxhY2VkIHdpdGggV1RGCisK
IDIwMTEtMTEtMjIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUm9sbCBDaHJvbWl1bSBERVBTIHRvIHIxMTA5NjAgYW5kIHNldCB0aGUgZGlzYWJsZV9uYWNs
IGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1
ZmZlclZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJW
aWV3LmNwcAppbmRleCA0MmVhMGZmLi5lMGVlOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>