<?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>31914</bug_id>
          
          <creation_ts>2009-11-26 08:23:07 -0800</creation_ts>
          <short_desc>[Android] The FrameLoaderClient is unaware of BackForwardList changes.</short_desc>
          <delta_ts>2009-12-03 04:25:08 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>31867</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Murdoch">benm</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>abarth</cc>
    
    <cc>android-webkit-unforking</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>166738</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-26 08:23:07 -0800</bug_when>
    <thetext>Master bug for upstreaming Android history changes: https://bugs.webkit.org/show_bug.cgi?id=31867

We would like a mechanism to notify the FrameLoaderClient of changes to the BackForwardList. On Android the BackForwardList is implemented as a Java class so we need a mechanism to keep the Java version in sync with the WebCore version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166756</commentid>
    <comment_count>1</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-26 10:35:59 -0800</bug_when>
    <thetext>Brady, addressing your comments from the original &quot;master bug&quot;:

(In reply to comment #4 on https://bugs.webkit.org/show_bug.cgi?id=31867)

&gt; Are you trying to be notified with the back/forward list changes?

Yes, exactly.

&gt; Other apps all seem to handle this without a specific notification.  Safari and
&gt; Chrome both manage to refresh their back/forward buttons at appropriate times
&gt; based on other delegate callbacks.

On Android, the BackForwardList and HistoryItem objects have counterparts that live on the Java side that we keep in sync with the WebCore versions of the objects via JNI. The bulk of the code to implement this is in WebKit/android, which we plan to upstream in due course. As I understand Chromium would have a similar syncing issue due to their sandboxing model but looking in their implementation in BackForwardList.h and BackForwardListChromium.cpp, they essentially reimplement the class. Our model doesn&apos;t require us to reimplement the class, but the addition of the callback when the BackForwardList changes simplifies our task.

&gt; That said, I can see the value in having these callbacks.  If this is the
&gt; problem you&apos;re trying to solve, then only the FrameLoaderClient changes are
&gt; needed.
&gt; 
&gt; Of those changes, dispatchDidRemoveHistoryItem() confuses me.  It has an int
&gt; parameter, but the parameter is always 0.  What is it for...?

Ah, that&apos;s my bad. I have removed the parameter.

&gt; New methods added to FrameLoaderClient should be pure virtual, with empty
&gt; implementations added to all of the implementations.  I know there&apos;s a few
&gt; empty/default implementations in FrameLoaderClient.h but they are incorrect and
&gt; should have been rejected.

OK. I was working on the precedent of those methods, and to save myself the task of providing default, empty implementations for each FrameLoaderClient implementation :) I will correct this in the next patch I upload and provide those default implementations to each implementation.

(In reply to comment #5 on https://bugs.webkit.org/show_bug.cgi?id=31867)
&gt; More thoughts, also:
&gt; 
&gt; dispatchDidAddHistoryItem() and dispatchDidRemoveHistoryItem() are too generic
&gt; of names.  We&apos;ve been fighting confusion of what is &quot;History&quot; for the entire
&gt; run of the project, and we shouldn&apos;t add more confusion.  They should be
&gt; renamed to make it clear that the HistoryItem represents a back/forward entry
&gt; and was added/removed from a BackForwardList.
&gt; 
&gt; Similarly, dispatchDidChangeHistoryIndex() could probably be called
&gt; dispatchDidChangeBackForwardIndex()

Good idea. I have renamed the functions.

&gt; Also, dispatchDidChangeHistoryIndex() includes a BackForwardList parameter, but
&gt; didAdd/Remove do not.  As it turns out, the parameter isn&apos;t required.
&gt;
&gt; Either all 3 should include the parameter, or not of them should.  My vote goes
&gt; for none of them.  Most (all?) FrameLoaderClient implementations know which
&gt; Frame/Page they represent, and as such they don&apos;t need to be told which
&gt; BackForwardList was affected.

Yes, we can access it in the FrameLoaderClient through the Page member, it was just a convenience having it as a parameter. I&apos;ve changed it to not be passed.


I&apos;ve got a new patch in the works to address these issues and will upload very shortly. Thanks for the review!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166906</commentid>
    <comment_count>2</comment_count>
      <attachid>43956</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-27 08:59:24 -0800</bug_when>
    <thetext>Created attachment 43956
Patch

This patch adds the callbacks to the FrameLoaderClient, the callsites to BackForwardList and empty implementations for each FrameLoaderClient implementation that lives upstream. The Android implementation of the callbacks will be upstreamed in due course, separate to this patch/bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167376</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:47:04 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 43956 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168105</commentid>
    <comment_count>4</comment_count>
      <attachid>43956</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-02 11:41:12 -0800</bug_when>
    <thetext>Comment on attachment 43956
Patch

I hate to see dead code added like this, but understand the iterative aspect of this process.  r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168356</commentid>
    <comment_count>5</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-12-03 04:25:08 -0800</bug_when>
    <thetext>Landed as r51629.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43956</attachid>
            <date>2009-11-27 08:59:24 -0800</date>
            <delta_ts>2009-12-02 11:41:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>31914-upload.txt</filename>
            <type>text/plain</type>
            <size>22578</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTQzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDktMTEtMjcgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtBbmRy
b2lkXSBUaGUgRnJhbWVMb2FkZXJDbGllbnQgaXMgdW5hd2FyZSBvZiBCYWNrRm9yd2FyZExpc3Qg
Y2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxOTE0CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyB0aHJlZSBuZXcgbWV0aG9kcyBvbiB0
aGUgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9ucyB3
aGVuIHRoZSBCYWNrRm9yd2FyZExpc3QgY2hhbmdlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMg
cmVxdWlyZWQuIEZ1bmN0aW9uYWxpdHkgb24gYWxsIHBsYXRmb3JtcyB1cHN0cmVhbSByZW1haW5z
IHRoZSBzYW1lLiBBbmRyb2lkIGlzIHRoZSBmaXJzdCBwbGF0Zm9ybSB0byBtYWtlIHVzZSBvZiB0
aGVzZSBjYWxsYmFja3MuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0pOiBFeGVjdXRlIHRo
ZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKTog
ZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmdvRm9yd2FyZCk6IGRp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbSk6IGRpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eSk6IGRpdG8u
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0pOiBBZGQg
YW4gZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBjYWxsYmFjayB0aGF0IGRvZXMgbm90aGlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmVtb3ZlQmFja0ZvcndhcmRJdGVtKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgpOiBkaXR0
by4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAwOS0xMS0yNiAg
U2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNw
cAkocmV2aXNpb24gNTE0MTkpCisrKyBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAg
LTc3LDI1ICs4MSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRy
CiAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKICAgICAgICAgcGFnZUNhY2hlKCkt
PnJlbW92ZShpdGVtLmdldCgpKTsKICAgICAgICAgbV9jdXJyZW50LS07CisgICAgICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0oaXRlbS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIG1fZW50cmllcy5hcHBl
bmQocHJwSXRlbSk7CiAgICAgbV9lbnRyeUhhc2guYWRkKG1fZW50cmllcy5sYXN0KCkpOwogICAg
IG1fY3VycmVudCsrOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oY3VycmVudEl0ZW0oKSk7CiB9CiAKIHZv
aWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQogewogICAgIEFTU0VSVChtX2N1cnJlbnQgPiAw
KTsKLSAgICBpZiAobV9jdXJyZW50ID4gMCkKKyAgICBpZiAobV9jdXJyZW50ID4gMCkgewogICAg
ICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5kaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKTsKKyAgICB9CiB9
CiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoKQogewogICAgIEFTU0VSVChtX2N1
cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSk7Ci0gICAgaWYgKG1fY3VycmVudCA8IG1fZW50
cmllcy5zaXplKCkgLSAxKQorICAgIGlmIChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0g
MSkgewogICAgICAgICBtX2N1cnJlbnQrKzsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKTsK
KyAgICB9CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSog
aXRlbSkKQEAgLTEwNyw4ICsxMTcsMTAgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVt
KEhpc3RvcnlJdAogICAgIGZvciAoOyBpbmRleCA8IG1fZW50cmllcy5zaXplKCk7ICsraW5kZXgp
CiAgICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdID09IGl0ZW0pCiAgICAgICAgICAgICBicmVh
azsKLSAgICBpZiAoaW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKQorICAgIGlmIChpbmRleCA8IG1f
ZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50ID0gaW5kZXg7CisgICAgICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRDaGFuZ2VC
YWNrRm9yd2FyZEluZGV4KCk7CisgICAgfQogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRM
aXN0OjpiYWNrSXRlbSgpCkBAIC0xNzQsOSArMTg2LDEwIEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0
OjpzZXRDYXBhY2l0eShpbnQgc2kKIAogICAgIGlmICghc2l6ZSkKICAgICAgICAgbV9jdXJyZW50
ID0gTm9DdXJyZW50SXRlbUluZGV4OwotICAgIGVsc2UgaWYgKG1fY3VycmVudCA+IG1fZW50cmll
cy5zaXplKCkgLSAxKQorICAgIGVsc2UgaWYgKG1fY3VycmVudCA+IG1fZW50cmllcy5zaXplKCkg
LSAxKSB7CiAgICAgICAgIG1fY3VycmVudCA9IG1fZW50cmllcy5zaXplKCkgLSAxOwotICAgICAg
ICAKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNw
YXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKTsKKyAgICB9CiAgICAgbV9jYXBhY2l0eSA9
IHNpemU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1MTQxOSkKKysr
IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiAr
MjgxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkg
eyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSop
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRk
QmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBj
b25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRl
bSopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgeyB9
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNDE5KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDYgKzE2Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3ZlQmFj
a0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QgPSAwOwogCiAgICAg
ICAgIC8vIFRoaXMgZnJhbWUgaGFzIGRpc3BsYXllZCBpbmFjdGl2ZSBjb250ZW50IChzdWNoIGFz
IGFuIGltYWdlKSBmcm9tIGFuCiAgICAgICAgIC8vIGluc2VjdXJlIHNvdXJjZS4gIEluYWN0aXZl
IGNvbnRlbnQgY2Fubm90IHNwcmVhZCB0byBvdGhlciBmcmFtZXMuCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDUxNDM4KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTExLTI3ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQW5kcm9pZF0gVGhlIEZyYW1lTG9hZGVyQ2xpZW50IGlzIHVuYXdhcmUgb2YgQmFja0Zvcndh
cmRMaXN0IGNoYW5nZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTkxNAorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRBZGRC
YWNrRm9yd2FyZEl0ZW0pOiBBZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uIE1ldGhvZCBhZGRl
ZCB0byBGcmFtZUxvYWRlckNsaWVudCBieSBBbmRyb2lkIChzZWUgYnVnKS4KKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbSk6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCk6IGRpdG8uCisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDA5LTExLTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQnVpbGQgZml4OiBy
ZXZlcnQgcjUxNDIxLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTE0MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDYsNiArMTA0Niwx
OCBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2hvdWxkR29Ub0hpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEFkZEJh
Y2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdAoreworfQorCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiB7CiAgICAgaWYgKG1fd2Vi
RnJhbWUtPmNsaWVudCgpKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MTQxOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVtb3Zl
QmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTE0MzgpCisrKyBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTExLTI3ICBC
ZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQW5kcm9pZF0gVGhlIEZyYW1lTG9hZGVyQ2xpZW50IGlz
IHVuYXdhcmUgb2YgQmFja0ZvcndhcmRMaXN0IGNoYW5nZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTkxNAorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0pOiBBZGQgYW4gZW1wdHkg
aW1wbGVtZW50YXRpb24uIE1ldGhvZCBhZGRlZCB0byBGcmFtZUxvYWRlckNsaWVudCBieSBBbmRy
b2lkIChzZWUgYnVnKS4KKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKTogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgpOiBkaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAy
MDA5LTExLTI2ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA1MTQx
OSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNiArNTg0LDE4IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGll
bnQ6OnNob3VsZEdvVG9IaXN0b3IKICAgICByZXR1cm4gaXRlbSAhPSAwOwogfQogCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVt
b3ZlQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QKK3sKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QK
K3sKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDUxNDE5KQorKysg
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzUsNiArMTM1LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpI
aXN0b3J5SXRlbSopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1v
dmVCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNvbnN0Owog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qKTsKSW5kZXg6IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNTE0MzgpCisrKyBXZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMjcgIEJlbiBN
dXJkb2NoICA8YmVubUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtBbmRyb2lkXSBUaGUgRnJhbWVMb2FkZXJDbGllbnQgaXMgdW5h
d2FyZSBvZiBCYWNrRm9yd2FyZExpc3QgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxOTE0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVtKTogQWRkIGFuIGVt
cHR5IGltcGxlbWVudGF0aW9uLiBNZXRob2QgYWRkZWQgdG8gRnJhbWVMb2FkZXJDbGllbnQgYnkg
QW5kcm9pZCAoc2VlIGJ1ZykuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9y
d2FyZEluZGV4KTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRIYWlrdS5oOgorCiAyMDA5LTExLTEzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGUgZm9yIGNoYW5nZXMgdG8gRnJhbWVMb2FkZXJDbGllbnQKSW5k
ZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDUxNDE5KQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIs
NiArNDYyLDE4IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkR29Ub0gKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRj
aERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9y
d2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAoreworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCgpIGNv
bnN0Cit7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2ZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCShyZXZpc2lvbiA1MTQxOSkKKysrIFdlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MCw2ICsxNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oSGlz
dG9yeUl0ZW0qKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
QmFja0ZvcndhcmRJbmRleCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVNjcm9s
bFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNDM4KQor
KysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAwOS0xMS0yNyAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0FuZHJvaWRdIFRoZSBGcmFtZUxv
YWRlckNsaWVudCBpcyB1bmF3YXJlIG9mIEJhY2tGb3J3YXJkTGlzdCBjaGFuZ2VzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE5MTQKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0pOiBBZGQgYW4gZW1wdHkg
aW1wbGVtZW50YXRpb24uIE1ldGhvZCBhZGRlZCB0byBGcmFtZUxvYWRlckNsaWVudCBieSBBbmRy
b2lkIChzZWUgYnVnKS4KKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSk6IGRpdHRvLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlQmFja0ZvcndhcmRJbmRleCk6IGRpdHRvLgorCiAyMDA5
LTExLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTE0MTkpCisrKyBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Myw2ICsxNDMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9I
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwpJbmRleDogV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA1MTQx
OSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTg3Nyw2ICs4NzcsMTggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkR29Ub0hpcwogICAgIHJldHVybiBbW3ZpZXcgX3BvbGljeURlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3OnZpZXcgc2hvdWxkR29Ub0hpc3RvcnlJdGVtOndlYkl0ZW1dOwogfQog
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3QKK3sK
K30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9y
d2FyZEluZGV4KCkgY29uc3QKK3sKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNDM4KQorKysgV2Vi
S2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTEx
LTI3ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQW5kcm9pZF0gVGhlIEZyYW1lTG9hZGVyQ2xp
ZW50IGlzIHVuYXdhcmUgb2YgQmFja0ZvcndhcmRMaXN0IGNoYW5nZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTkxNAorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbSk6IEFkZCBh
biBlbXB0eSBpbXBsZW1lbnRhdGlvbi4gTWV0aG9kIGFkZGVkIHRvIEZyYW1lTG9hZGVyQ2xpZW50
IGJ5IEFuZHJvaWQgKHNlZSBidWcpLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOiBkaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlQmFja0Zvcndh
cmRJbmRleCk6IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaDoKKwogMjAwOS0xMS0yNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgpJ
bmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAkocmV2aXNpb24gNTE0MTkpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2ICs2NDIsMTggQEAgYm9v
bCBGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdAogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QKK3sKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShXZWJDb3JlOjpIaXN0
b3J5SXRlbSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QKK3sKK30KKwogdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1MTQxOSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJl
Y3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3Q7Ci0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRk
QmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qKTsKIApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxNDM4KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0xMS0yNyAgQmVuIE11cmRvY2gg
IDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0FuZHJvaWRdIFRoZSBGcmFtZUxvYWRlckNsaWVudCBpcyB1bmF3YXJlIG9m
IEJhY2tGb3J3YXJkTGlzdCBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE5MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEFkZEJhY2tGb3J3YXJkSXRlbSk6IEFkZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4g
TWV0aG9kIGFkZGVkIHRvIEZyYW1lTG9hZGVyQ2xpZW50IGJ5IEFuZHJvaWQgKHNlZSBidWcpLgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVtb3ZlQmFja0Zvcndh
cmRJdGVtKTogZGl0dG8uCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAwOS0xMS0yNCAgQ2hyaXMgTWFycmluICA8
Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQW5vdGhlciBXaW5kb3dzIGJ1aWxkIGZpeApJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDUxNDE5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Nyw2ICs1NjcsMTgg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpcwogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEFkZEJhY2tG
b3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0Cit7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJdGVtKikg
Y29uc3QKK3sKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3QKK3sKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiB7CiAgICAgV2ViVmlldyogd2ViVmll
dyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDUxNDE5KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw2ICs5MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xv
YmFsSGlzdG9yeSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJl
Y3RMaW5rcygpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRBZGRC
YWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2Fy
ZEluZGV4KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNTE0MzgpCisrKyBXZWJLaXQvd3gvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMjcgIEJlbiBN
dXJkb2NoICA8YmVubUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtBbmRyb2lkXSBUaGUgRnJhbWVMb2FkZXJDbGllbnQgaXMgdW5h
d2FyZSBvZiBCYWNrRm9yd2FyZExpc3QgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxOTE0CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0pOiBBZGQgYW4gZW1wdHkgaW1w
bGVtZW50YXRpb24uIE1ldGhvZCBhZGRlZCB0byBGcmFtZUxvYWRlckNsaWVudCBieSBBbmRyb2lk
IChzZWUgYnVnKS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3Bh
dGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgpOiBk
aXR0by4KKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwog
MjAwOS0xMS0yMyAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2
aXNpb24gNTE0MTkpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDYgKzU0NywxOCBAQCBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OnNob3VsZEdvVG9IaXN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0oV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAoreworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRpc3BhdGNoRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikg
Y29uc3QKK3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5n
ZUJhY2tGb3J3YXJkSW5kZXgoKSBjb25zdAoreworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
CShyZXZpc2lvbiA1MTQxOSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRkQmFja0ZvcndhcmRJdGVt
KEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
bW92ZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VCYWNrRm9yd2FyZEluZGV4KCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9y
eUl0ZW0qKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAg
ICAgICAK
</data>
<flag name="review"
          id="25705"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>