<?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>72100</bug_id>
          
          <creation_ts>2011-11-11 01:10:02 -0800</creation_ts>
          <short_desc>Accessibility: new iframe content may not be reflected in ax tree</short_desc>
          <delta_ts>2011-11-11 18:23:31 -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>Accessibility</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="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500579</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 01:10:02 -0800</bug_when>
    <thetext>When an iframe loads new content after it already has an AccessibilityObject, the child of the iframe will still point to the old scroll area&apos;s AccessibilityObject, which will be invalid, rather than the new scroll area&apos;s AccessibilityObject.

This is a regression caused by https://bugs.webkit.org/show_bug.cgi?id=68636. Prior to 68636, the whole ax tree was cleared when any iframe loaded new content. After 68636, the tree isn&apos;t cleared when only an iframe as opposed to the top document reloads. However, if the user has already explored the iframe and then it loads new content, there&apos;s now an invalid tree. I&apos;ll send a patch that correctly updates an iframe&apos;s AccessibilityObject when new content is loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500582</commentid>
    <comment_count>1</comment_count>
      <attachid>114645</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 01:22:10 -0800</bug_when>
    <thetext>Created attachment 114645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500794</commentid>
    <comment_count>2</comment_count>
      <attachid>114645</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-11 08:29:46 -0800</bug_when>
    <thetext>Comment on attachment 114645
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:441
&gt; +

i&apos;m not sure this will be true on webkit1. on wk1 the web area&apos;s parent should be an attachment

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3422
&gt;          

I think we could remove this isAccessibilityRenderObject restriction and postNotification can take an axObject instead. that will reduce the code in this method and you won&apos;t need to add your comment

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:207
&gt;      

since this method is in AXObject.h now as public, it does not need to be public in AXRenderObject

&gt; Source/WebCore/accessibility/AccessibilityScrollView.cpp:183
&gt; +

what&apos;s up with this change?

&gt; Source/WebCore/dom/Document.cpp:2232
&gt;      }

this change is not reflected in the layout test. it should be in a different bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500884</commentid>
    <comment_count>3</comment_count>
      <attachid>114645</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 10:18:52 -0800</bug_when>
    <thetext>Comment on attachment 114645
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:441
&gt;&gt; +
&gt; 
&gt; i&apos;m not sure this will be true on webkit1. on wk1 the web area&apos;s parent should be an attachment

This is copied directly from parentObject except with get() instead of getOrCreate(), so I&apos;d be really surprised if it breaks anything.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3422
&gt;&gt;          
&gt; 
&gt; I think we could remove this isAccessibilityRenderObject restriction and postNotification can take an axObject instead. that will reduce the code in this method and you won&apos;t need to add your comment

Good idea! That does simplify the code a lot, I even pulled the postNotification out of the loop.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:207
&gt;&gt;      
&gt; 
&gt; since this method is in AXObject.h now as public, it does not need to be public in AXRenderObject

Done.

&gt;&gt; Source/WebCore/accessibility/AccessibilityScrollView.cpp:183
&gt;&gt; +
&gt; 
&gt; what&apos;s up with this change?

It was returning the grandparent, not the parent. An iframe in a document might look something like this:

GroupRole id=10
  UnknownRole id=11  &lt;-- iframe tag
    ScrollAreaRole id=12
      WebAreaRole id=13

Calling parent() on the AccessibilityScrollView (id=12) was returning the parent of the iframe, in this case id=10. My change modifies it to return the renderer of the owner element itself (id=11 in this example). This is necessary for this patch because otherwise setNeedsToUpdateChildren won&apos;t get called on the iframe when childrenChanged is walking up the parent chain from the web area.

&gt;&gt; Source/WebCore/dom/Document.cpp:2232
&gt;&gt;      }
&gt; 
&gt; this change is not reflected in the layout test. it should be in a different bug

You&apos;re right, I&apos;ll pull it into a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500887</commentid>
    <comment_count>4</comment_count>
      <attachid>114726</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 10:20:42 -0800</bug_when>
    <thetext>Created attachment 114726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500892</commentid>
    <comment_count>5</comment_count>
      <attachid>114726</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-11 10:27:19 -0800</bug_when>
    <thetext>Comment on attachment 114726
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityScrollView.h:73
&gt; +    mutable bool m_childrenDirty;

this shouldn&apos;t have to be mutable anymore  i think because setNeedsToUpdateChildren() is not const. same probably goes for the ivar in the AX render object as well

&gt; Source/WebCore/accessibility/AccessibilityScrollView.h:-85
&gt; -

is this removing the newline at the end of the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500932</commentid>
    <comment_count>6</comment_count>
      <attachid>114726</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 11:02:02 -0800</bug_when>
    <thetext>Comment on attachment 114726
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityScrollView.h:73
&gt;&gt; +    mutable bool m_childrenDirty;
&gt; 
&gt; this shouldn&apos;t have to be mutable anymore  i think because setNeedsToUpdateChildren() is not const. same probably goes for the ivar in the AX render object as well

Done.

&gt;&gt; Source/WebCore/accessibility/AccessibilityScrollView.h:-85
&gt;&gt; -
&gt; 
&gt; is this removing the newline at the end of the file?

Sorry - my editor did that automatically. I fixed it manually, will try to avoid that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500953</commentid>
    <comment_count>7</comment_count>
      <attachid>114739</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 11:17:49 -0800</bug_when>
    <thetext>Created attachment 114739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500972</commentid>
    <comment_count>8</comment_count>
      <attachid>114747</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-11 11:36:51 -0800</bug_when>
    <thetext>Created attachment 114747
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501288</commentid>
    <comment_count>9</comment_count>
      <attachid>114747</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 18:23:26 -0800</bug_when>
    <thetext>Comment on attachment 114747
Patch for landing

Clearing flags on attachment: 114747

Committed r100057: &lt;http://trac.webkit.org/changeset/100057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501289</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 18:23:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114645</attachid>
            <date>2011-11-11 01:22:10 -0800</date>
            <delta_ts>2011-11-11 10:20:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72100-20111111012209.patch</filename>
            <type>text/plain</type>
            <size>15019</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTEtMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgTmV3IGlmcmFtZSBjb250
ZW50IG1heSBub3QgYmUgcmVmbGVjdGVkIGluIHRoZSBheCB0cmVlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29yZSBpc3N1ZSB3YXMgdGhhdCB3
aGVuIGNoaWxkcmVuQ2hhbmdlZCB3YXMgY2FsbGVkIG9uIGEKKyAgICAgICAgd2ViIGFyZWEgZnJv
bSBhbiBpZnJhbWUgdGhhdCB3YXMganVzdCBkZXRhY2hlZCwgaXQgd2Fzbid0IGNhbGxpbmcKKyAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkIG9uIGl0cyBwYXJlbnQgc2Nyb2xsIGFyZWEsIG9yIHRoYXQg
c2Nyb2xsIGFyZWEncworICAgICAgICBwYXJlbnQgaWZyYW1lIGVsZW1lbnQuIFRvIGZpeCB0aGlz
LCBub3cgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaW1wbGVtZW50cyBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4gYW5kIHBhcmVudE9iamVjdElmRXhpc3RzLAorICAgICAgICBhbmQg
Y2hpbGRyZW5DaGFuZ2VkIGNhbGxzIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbiBvbiBldmVyeSBv
YmplY3QKKyAgICAgICAgaW4gdGhlIHBhcmVudCBjaGFpbiwgbm90IGp1c3QgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdHMuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlm
cmFtZS11cGRhdGVzLWF4dHJlZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpw
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorCiAyMDEx
LTEwLTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBIUlRGIERhdGFiYXNlIGNvbnNvbGlkYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdl
dChXaWRnZXQqKTsKICAgICAKICAgICB2b2lkIHJlbW92ZShSZW5kZXJPYmplY3QqKTsKICAgICB2
b2lkIHJlbW92ZShXaWRnZXQqKTsKQEAgLTE3MSw3ICsxNzIsNiBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFy
ZWFFbGVtZW50Kik7CiAgICAgCiAgICAgQVhJRCBnZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3Qq
KTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXQoV2lkZ2V0Kik7CiB9OwogCiBib29sIG5v
ZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcmIHJvbGUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9u
IDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NCw2ICs1NjQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsg
fQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNSw2ICs0MzUsMTAgQEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OgogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAogeworICAgIC8vIFdl
YkFyZWEncyBwYXJlbnQgc2hvdWxkIGJlIHRoZSBzY3JvbGwgdmlldyBjb250YWluaW5nIGl0Lgor
ICAgIGlmIChpc1dlYkFyZWEoKSkKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
KG1fcmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKSk7CisKICAgICByZXR1cm4gYXhPYmplY3RDYWNo
ZSgpLT5nZXQocmVuZGVyUGFyZW50T2JqZWN0KCkpOwogfQogICAgIApAQCAtMzQwOSw2ICszNDEz
LDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAvLyBJ
ZiBBWCBlbGVtZW50cyBhcmUgY3JlYXRlZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhl
IHJlbmRlciB0cmVlIHdoaWxlIGl0J3MgaW4gYSBmdW5reSBzdGF0ZS4KICAgICAvLyBBdCB0aGUg
c2FtZSB0aW1lLCBwcm9jZXNzIEFSSUEgbGl2ZSByZWdpb24gY2hhbmdlcy4KICAgICBmb3IgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHRoaXM7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RJZkV4aXN0cygpKSB7CisgICAgICAgIC8vIENhbGwgc2V0TmVlZHNUb1Vw
ZGF0ZUNoaWxkcmVuIG9uIGFsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0cywgbm90IGp1c3QgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdHMuCisgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1h
a2Ugc3VyZSBpZnJhbWVzIGdldCB1cGRhdGVkIHdoZW4gdGhleSBsb2FkIG5ldyBjb250ZW50Lgor
ICAgICAgICBwYXJlbnQtPnNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOworCiAgICAgICAgIGlm
ICghcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAKQEAgLTM0MjAsOCArMzQyOCw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAgICAgICAgIHNlbnRDaGlsZHJlbkNoYW5nZWQg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBheFBhcmVudC0+c2V0TmVlZHNU
b1VwZGF0ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAogICAgICAgICAvLyBUaGVzZSBub3RpZmljYXRp
b25zIGFsd2F5cyBuZWVkIHRvIGJlIHNlbnQgYmVjYXVzZSBzY3JlZW5yZWFkZXJzIGFyZSByZWxp
YW50IG9uIHRoZW0gdG8gcGVyZm9ybS4gCiAgICAgICAgIC8vIEluIG90aGVyIHdvcmRzLCB0aGV5
IG5lZWQgdG8gYmUgc2VudCBldmVuIHdoZW4gdGhlIHNjcmVlbiByZWFkZXIgaGFzIG5vdCBhY2Nl
c3NlZCB0aGlzIGxpdmUgcmVnaW9uIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZS4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2
ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1
ZTsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpOwpAQCAt
MzIwLDcgKzMyMSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9u
QnVzeSgpIGNvbnN0OyAgICAKICAgICAKICAgICBib29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxS
b2xlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCB7
IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KICAgICAKICAgICBtdXRhYmxlIEFjY2Vzc2liaWxp
dHlSb2xlIG1fcm9sZUZvck1TQUE7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9u
IDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3KFNjcm9sbFZpZXcqIHZpZXcpCiAgICAgOiBtX3Njcm9sbFZpZXcodmlldykKKyAgICAs
IG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkKIHsKIH0KIApAQCAtNzQsNiArNzUsOSBAQCBXaWRnZXQq
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3aWRnZXRGCiAgICAgCiB2b2lkIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkKIHsKKyAgICBpZiAobV9j
aGlsZHJlbkRpcnR5KQorICAgICAgICBjbGVhckNoaWxkcmVuKCk7CisKICAgICBpZiAoIW1faGF2
ZUNoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZHJlbigpOwogICAgIApAQCAtMTc0LDEwICsxNzgs
MjIgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbAogICAgICAgICBy
ZXR1cm4gMDsKICAgICAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGlj
X2Nhc3Q8RnJhbWVWaWV3Kj4obV9zY3JvbGxWaWV3LmdldCgpKS0+ZnJhbWUoKS0+b3duZXJFbGVt
ZW50KCk7Ci0gICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJQYXJ0KCkpCi0gICAgICAgIHJl
dHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG93bmVyLT5yZW5kZXJQYXJ0KCktPnBh
cmVudCgpKTsKLSAgICAKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAg
ICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG93bmVyLT5yZW5kZXJlcigp
KTsKKwogICAgIHJldHVybiAwOwogfQogICAgIAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZyYW1lVmll
dyo+KG1fc2Nyb2xsVmlldy5nZXQoKSktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOworICAgIGlm
IChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0KG93bmVyLT5yZW5kZXJlcigpKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDk5
OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CiAgICAgCiAgICAgdmlydHVhbCBGcmFtZVZp
ZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRPYmplY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dE9iamVjdElmRXhpc3RzKCkgY29uc3Q7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
d2ViQXJlYU9iamVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
Zmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIHdlYkFyZWFPYmplY3QoKTsgfQpAQCAtNjgsNiAr
NzAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxWaWV3PiBtX3Njcm9sbFZpZXc7CiAg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAg
ICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBt
dXRhYmxlIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwogfTsKIAogaW5saW5lIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KiB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCkKQEAgLTgyLDQgKzg1LDMgQEAgaW5saW5lIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiB0b0FjY2VzcwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXdfaAotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIxOSwxMyArMjIxOSwxNiBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkK
ICAgICB9CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlm
IChmICYmIHJlbmRlck9iamVjdCAmJiB0aGlzID09IHRvcERvY3VtZW50KCkgJiYgQVhPYmplY3RD
YWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkgeworICAgIGlmIChmICYmIHJlbmRlck9iamVj
dCAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7CiAgICAgICAgIC8v
IFRoZSBBWCBjYWNoZSBtYXkgaGF2ZSBiZWVuIGNsZWFyZWQgYXQgdGhpcyBwb2ludCwgYnV0IHdl
IG5lZWQgdG8gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGFuCiAgICAgICAgIC8vIEFYIG9iamVjdCB0
byBzZW5kIHRoZSBub3RpZmljYXRpb24gdG8uIGdldE9yQ3JlYXRlIHdpbGwgbWFrZSBzdXJlIHRo
YXQgYW4gdmFsaWQgQVggb2JqZWN0CiAgICAgICAgIC8vIGV4aXN0cyBpbiB0aGUgY2FjaGUgKHdl
IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBpdCBoZXJlKS4g
VGhpcyBpcyAKICAgICAgICAgLy8gb25seSBzYWZlIHRvIGNhbGwgd2hlbiBhIGxheW91dCBpcyBu
b3QgaW4gcHJvZ3Jlc3MsIHNvIGl0IGNhbiBub3QgYmUgdXNlZCBpbiBwb3N0Tm90aWZpY2F0aW9u
LiAgICAKICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJPYmplY3Qp
OwotICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24ocmVuZGVyT2JqZWN0
LCBBWE9iamVjdENhY2hlOjpBWExvYWRDb21wbGV0ZSwgdHJ1ZSk7CisgICAgICAgIGlmICh0aGlz
ID09IHRvcERvY3VtZW50KCkpCisgICAgICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3Rp
ZmljYXRpb24ocmVuZGVyT2JqZWN0LCBBWE9iamVjdENhY2hlOjpBWExvYWRDb21wbGV0ZSwgdHJ1
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlm
aWNhdGlvbihyZW5kZXJPYmplY3QsIEFYT2JqZWN0Q2FjaGU6OkFYTGF5b3V0Q29tcGxldGUsIHRy
dWUpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTkzNCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTEx
LTExICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIE5l
dyBpZnJhbWUgY29udGVudCBtYXkgbm90IGJlIHJlZmxlY3RlZCBpbiB0aGUgYXggdHJlZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0
IHRoYXQgbWFrZXMgc3VyZSB0aGF0IGlmIHlvdSBleHBsb3JlIHRoZSBhY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIHRyZWUgb2YgYW4gaWZyYW1lIGFuZCB0aGF0IGlmcmFtZSBzdWJzZXF1ZW50bHkgbG9h
ZHMgbmV3IGNvbnRlbnQsCisgICAgICAgIHRoZSBpZnJhbWUgQWNjZXNzaWJpbGl0eU9iamVjdCdz
IGRlc2NlbmRhbnRzIGFyZSB1cGRhdGVkIHRvIHBvaW50CisgICAgICAgIHRvIHRoZSBuZXcgY29u
dGVudCwgbm90IHRoZSBvbGQgY29udGVudC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbG9h
ZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWw6IEFkZGVk
LgorCiAyMDExLTExLTEwICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCwgYWRkIExpbnV4IGJhc2VsaW5lcyBJIGZvcmdv
dCB0byBjb21taXQgaW4gdGhlIGxhc3QgcmViYXNlbGluZS4KSW5kZXg6IExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBk
YXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9sb2FkaW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK0JlZm9yZQorCisKK0FmdGVyCisKK0VuZCBvZiB0
ZXN0CisKK1RoaXMgdGVzdHMgdGhhdCBpZiBhbiBpZnJhbWUgbG9hZHMgbmV3IGNvbnRlbnQgYWZ0
ZXIgaXRzIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gYWNjZXNzZWQsIHRo
ZSBpZnJhbWUgYWNjZXNzaWJpbGl0eSBvYmplY3QncyBkZXNjZW5kYW50cyBhcmUgdGhlIG5ldyBz
Y3JvbGwgYXJlYSBhbmQgd2ViIGFyZWEsIG5vdCB0aGUgb2xkIGRlbGV0ZWQgb25lcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaWZyYW1lLmlzRXF1YWwobmV3SWZyYW1l
KSBpcyB0cnVlCitQQVNTIHNjcm9sbGFyZWEuaXNFcXVhbChuZXdTY3JvbGxhcmVhKSBpcyBmYWxz
ZQorUEFTUyBzdWJ3ZWJhcmVhLmlzRXF1YWwobmV3U3Vid2ViYXJlYSkgaXMgZmFsc2UKK1BBU1Mg
bmV3U3Vid2ViYXJlYS5jaGlsZHJlbkNvdW50ID4gMCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sb2FkaW5n
LWlmcmFtZS11cGRhdGVzLWF4dHJlZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9sb2Fk
aW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRl
cy1heHRyZWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisKKyAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgaWYgYW4gaWZyYW1lIGxvYWRzIG5ldyBjb250ZW50IGFmdGVyIGl0cyBhY2Nlc3NpYmls
aXR5IG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFjY2Vzc2VkLCB0aGUgaWZyYW1lIGFjY2Vzc2li
aWxpdHkgb2JqZWN0J3MgZGVzY2VuZGFudHMgYXJlIHRoZSBuZXcgc2Nyb2xsIGFyZWEgYW5kIHdl
YiBhcmVhLCBub3QgdGhlIG9sZCBkZWxldGVkIG9uZXMuIik7CisKKyAgICAgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICAgICAgd2luZG93LnJvb3QgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudDsKKyAgICAgICAgICAgIHdpbmRvdy5i
b2R5ID0gcm9vdC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICB3aW5kb3cuaWZyYW1lID0g
Ym9keS5jaGlsZEF0SW5kZXgoMSkuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgd2luZG93
LnNjcm9sbGFyZWEgPSBpZnJhbWUuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgd2luZG93
LnN1YndlYmFyZWEgPSBzY3JvbGxhcmVhLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHdpbmRvdy5pZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlm
cmFtZSIpOworICAgICAgICBpZnJhbWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cubmV3SWZyYW1lID0gYm9keS5jaGlsZEF0SW5k
ZXgoMSkuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgICAgIHdpbmRvdy5uZXdTY3JvbGxh
cmVhID0gbmV3SWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
bmV3U3Vid2ViYXJlYSA9IG5ld1Njcm9sbGFyZWEuY2hpbGRBdEluZGV4KDApOworCisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJpZnJhbWUuaXNFcXVhbChuZXdJZnJhbWUpIik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgic2Nyb2xsYXJlYS5pc0VxdWFsKG5ld1Njcm9sbGFy
ZWEpIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgic3Vid2ViYXJlYS5pc0VxdWFs
KG5ld1N1YndlYmFyZWEpIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJuZXdTdWJ3
ZWJhcmVhLmNoaWxkcmVuQ291bnQgPiAwIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCBmYWxz
ZSk7CisKKyAgICAgICAgLy8gTG9hZCBjb250ZW50IGludG8gdGhlIGlmcmFtZS4gVGhpcyB3aWxs
IHRyaWdnZXIgdGhlIGV2ZW50CisgICAgICAgIC8vIGhhbmRsZXIgYWJvdmUsIHdoaWNoIHdpbGwg
Y2hlY2sgdGhhdCB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlCisgICAgICAgIC8vIHdhcyB1cGRhdGVk
IHdpdGggbmV3IGNvbnRlbnQuCisgICAgICAgIHdpbmRvdy5pZnJhbWVFbGVtZW50LnNyYyA9ICJk
YXRhOnRleHQvaHRtbCw8Ym9keT48YnV0dG9uPkNsaWNrIG1lPC9idXR0b24+PC9ib2R5PiI7CisK
KyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkg
eworICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDEwKTsKKyAgICB9LCBmYWxzZSk7CisKKyAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+QmVmb3JlPC9wPgorCis8aWZyYW1lIGlk
PSJpZnJhbWUiPjwvaWZyYW1lPgorCis8cD5BZnRlcjwvcD4KKworPHA+RW5kIG9mIHRlc3Q8L3A+
CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114726</attachid>
            <date>2011-11-11 10:20:42 -0800</date>
            <delta_ts>2011-11-11 11:17:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72100-20111111102041.patch</filename>
            <type>text/plain</type>
            <size>15128</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgTmV3IGlmcmFtZSBjb250
ZW50IG1heSBub3QgYmUgcmVmbGVjdGVkIGluIHRoZSBheCB0cmVlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29yZSBpc3N1ZSB3YXMgdGhhdCB3
aGVuIGNoaWxkcmVuQ2hhbmdlZCB3YXMgY2FsbGVkIG9uIGEKKyAgICAgICAgd2ViIGFyZWEgZnJv
bSBhbiBpZnJhbWUgdGhhdCB3YXMganVzdCBkZXRhY2hlZCwgaXQgd2Fzbid0IGNhbGxpbmcKKyAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkIG9uIGl0cyBwYXJlbnQgc2Nyb2xsIGFyZWEsIG9yIHRoYXQg
c2Nyb2xsIGFyZWEncworICAgICAgICBwYXJlbnQgaWZyYW1lIGVsZW1lbnQuIFRvIGZpeCB0aGlz
LCBub3cgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaW1wbGVtZW50cyBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4gYW5kIHBhcmVudE9iamVjdElmRXhpc3RzLAorICAgICAgICBhbmQg
Y2hpbGRyZW5DaGFuZ2VkIGNhbGxzIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbiBvbiBldmVyeSBv
YmplY3QKKyAgICAgICAgaW4gdGhlIHBhcmVudCBjaGFpbiwgbm90IGp1c3QgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdHMuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlm
cmFtZS11cGRhdGVzLWF4dHJlZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpw
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKToKKwogMjAxMS0xMS0xMSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgVGV4dFRy
YWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShy
ZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVh
ZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChXaWRnZXQqKTsKICAgICAKICAgICB2b2lkIHJl
bW92ZShSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHJlbW92ZShXaWRnZXQqKTsKQEAgLTE3MSw3
ICsxNzIsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1
c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAgCiAgICAgQVhJRCBn
ZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBn
ZXQoV2lkZ2V0Kik7CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcm
IHJvbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NCw2
ICs1NjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGls
ZHJlbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw2ICs0MzUsMTAg
QEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OgogICAgIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdAogeworICAgIC8vIFdlYkFyZWEncyBwYXJlbnQgc2hvdWxkIGJlIHRoZSBz
Y3JvbGwgdmlldyBjb250YWluaW5nIGl0LgorICAgIGlmIChpc1dlYkFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KG1fcmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKSk7
CisKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXQocmVuZGVyUGFyZW50T2JqZWN0KCkp
OwogfQogICAgIApAQCAtMzQwMiwzNiArMzQwNiwyNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHNlbnRDaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICAKKyAgICBheE9i
amVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgQVhPYmplY3RD
YWNoZTo6QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworCiAgICAgLy8gR28gdXAgdGhlIGFjY2Vz
c2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBtZXRob2QgaXMKICAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBsYXlvdXRz
LCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAogICAgIC8vIElmIEFYIGVsZW1lbnRzIGFy
ZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRyZWUgd2hp
bGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgogICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIHByb2Nl
c3MgQVJJQSBsaXZlIHJlZ2lvbiBjaGFuZ2VzLgogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gdGhpczsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdElm
RXhpc3RzKCkpIHsKLSAgICAgICAgaWYgKCFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KiBheFBhcmVudCA9IHRvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dChwYXJlbnQpOwotICAgICAgICAKLSAgICAgICAgLy8gU2VuZCB0aGUgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIGZpcnN0IGFjY2Vzc2liaWxpdHkgcmVuZGVyIG9iamVjdCBh
bmNlc3Rvci4KLSAgICAgICAgaWYgKCFzZW50Q2hpbGRyZW5DaGFuZ2VkKSB7Ci0gICAgICAgICAg
ICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRlcmVyKCks
IEFYT2JqZWN0Q2FjaGU6OkFYQ2hpbGRyZW5DaGFuZ2VkLCB0cnVlKTsKLSAgICAgICAgICAgIHNl
bnRDaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBh
eFBhcmVudC0+c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAorICAgICAgICBw
YXJlbnQtPnNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOworCiAgICAgICAgIC8vIFRoZXNlIG5v
dGlmaWNhdGlvbnMgYWx3YXlzIG5lZWQgdG8gYmUgc2VudCBiZWNhdXNlIHNjcmVlbnJlYWRlcnMg
YXJlIHJlbGlhbnQgb24gdGhlbSB0byBwZXJmb3JtLiAKICAgICAgICAgLy8gSW4gb3RoZXIgd29y
ZHMsIHRoZXkgbmVlZCB0byBiZSBzZW50IGV2ZW4gd2hlbiB0aGUgc2NyZWVuIHJlYWRlciBoYXMg
bm90IGFjY2Vzc2VkIHRoaXMgbGl2ZSByZWdpb24gc2luY2UgdGhlIGxhc3QgdXBkYXRlLgogCiAg
ICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBzdXBwb3J0cyBBUklBIGxpdmUgcmVnaW9ucywgdGhl
biBub3RpZnkgdGhlIEFUIG9mIGNoYW5nZXMuCi0gICAgICAgIGlmIChheFBhcmVudC0+c3VwcG9y
dHNBUklBTGl2ZVJlZ2lvbigpKQotICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKGF4UGFyZW50LT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdp
b25DaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYgKHBhcmVudC0+c3VwcG9ydHNBUklBTGl2ZVJl
Z2lvbigpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBh
cmVudCwgcGFyZW50LT5kb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdpb25DaGFu
Z2VkLCB0cnVlKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyBhbiBB
UklBIHRleHQgY29udHJvbCwgbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAgICAgICBpZiAo
YXhQYXJlbnQtPmlzQVJJQVRleHRDb250cm9sKCkgJiYgIWF4UGFyZW50LT5pc05hdGl2ZVRleHRD
b250cm9sKCkgJiYgIWF4UGFyZW50LT5ub2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAg
ICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRl
cmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYg
KHBhcmVudC0+aXNBUklBVGV4dENvbnRyb2woKSAmJiAhcGFyZW50LT5pc05hdGl2ZVRleHRDb250
cm9sKCkgJiYgIXBhcmVudC0+bm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAg
ICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBhcmVudCwgcGFyZW50LT5kb2N1
bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiAgICAgfQogfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MCw2ICsyODAsNyBAQCBwcml2YXRlOgogICAgIFBsYWluVGV4dFJhbmdlIGFy
aWFTZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVs
ZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgbm9kZUlz
VGV4dENvbnRyb2woY29uc3QgTm9kZSopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4oKSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KIAogICAgIEVs
ZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVudUJ1dHRvbigpIGNvbnN0OwogICAgIEVsZW1lbnQqIG1l
bnVJdGVtRWxlbWVudEZvck1lbnUoKSBjb25zdDsKQEAgLTMyMCw3ICszMjEsNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAg
CiAgICAgYm9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVl
OyB9CiAgICAgCiAgICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3KiB2aWV3
KQogICAgIDogbV9zY3JvbGxWaWV3KHZpZXcpCisgICAgLCBtX2NoaWxkcmVuRGlydHkoZmFsc2Up
CiB7CiB9CiAKQEAgLTc0LDYgKzc1LDkgQEAgV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6d2lkZ2V0RgogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlQ2hp
bGRyZW5JZk5lY2Vzc2FyeSgpCiB7CisgICAgaWYgKG1fY2hpbGRyZW5EaXJ0eSkKKyAgICAgICAg
Y2xlYXJDaGlsZHJlbigpOworCiAgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGRyZW4oKTsKICAgICAKQEAgLTE3NCwxMCArMTc4LDIyIEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Ny
b2xsVmlldy5nZXQoKSktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwotICAgIGlmIChvd25lciAm
JiBvd25lci0+cmVuZGVyUGFydCgpKQotICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShvd25lci0+cmVuZGVyUGFydCgpLT5wYXJlbnQoKSk7Ci0gICAgCisgICAgaWYg
KG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShvd25lci0+cmVuZGVyZXIoKSk7CisKICAgICByZXR1cm4gMDsKIH0K
ICAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJl
bnRPYmplY3RJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJh
bWVWaWV3KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXIgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcuZ2V0KCkp
LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRl
cmVyKCkpCisgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldChvd25lci0+cmVuZGVy
ZXIoKSk7CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oCShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsMTEgKzU0LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVu
KCk7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGls
ZHJlbigpIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlU2Nyb2xs
YmFycygpOwogICAgIAogICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
OwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYkFyZWFPYmplY3QoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiB3ZWJBcmVhT2JqZWN0KCk7IH0KQEAgLTY4LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8U2Nyb2xsVmlldz4gbV9zY3JvbGxWaWV3OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CisgICAgbXV0YWJsZSBib29sIG1fY2hpbGRyZW5E
aXJ0eTsKIH07CiAKIGlubGluZSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogdG9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkBAIC04Miw0ICs4NSwz
IEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogdG9BY2Nlc3MKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3X2gKLQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gOTk5ODYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0xMSAgRG9taW5pYyBNYXp6b25pICA8ZG1h
enpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBOZXcgaWZyYW1lIGNvbnRlbnQgbWF5IG5vdCBi
ZSByZWZsZWN0ZWQgaW4gdGhlIGF4IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCB0aGF0IG1ha2VzIHN1cmUgdGhhdCBpZiB5
b3UgZXhwbG9yZSB0aGUgYWNjZXNzaWJpbGl0eQorICAgICAgICB0cmVlIG9mIGFuIGlmcmFtZSBh
bmQgdGhhdCBpZnJhbWUgc3Vic2VxdWVudGx5IGxvYWRzIG5ldyBjb250ZW50LAorICAgICAgICB0
aGUgaWZyYW1lIEFjY2Vzc2liaWxpdHlPYmplY3QncyBkZXNjZW5kYW50cyBhcmUgdXBkYXRlZCB0
byBwb2ludAorICAgICAgICB0byB0aGUgbmV3IGNvbnRlbnQsIG5vdCB0aGUgb2xkIGNvbnRlbnQu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlm
cmFtZS11cGRhdGVzLWF4dHJlZS5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0xMSAgVG9ueSBHZW50
aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4cGVjdCBjaHJvbWl1bSB0
byBwYXNzIHRoaXMgdGVzdCBhZnRlciByOTk5NTguCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMt
YXh0cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE5IEBACitCZWZvcmUKKworCitBZnRlcgorCitFbmQgb2YgdGVzdAor
CitUaGlzIHRlc3RzIHRoYXQgaWYgYW4gaWZyYW1lIGxvYWRzIG5ldyBjb250ZW50IGFmdGVyIGl0
cyBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFjY2Vzc2VkLCB0aGUgaWZy
YW1lIGFjY2Vzc2liaWxpdHkgb2JqZWN0J3MgZGVzY2VuZGFudHMgYXJlIHRoZSBuZXcgc2Nyb2xs
IGFyZWEgYW5kIHdlYiBhcmVhLCBub3QgdGhlIG9sZCBkZWxldGVkIG9uZXMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5pc0VxdWFsKG5ld0lmcmFtZSkgaXMg
dHJ1ZQorUEFTUyBzY3JvbGxhcmVhLmlzRXF1YWwobmV3U2Nyb2xsYXJlYSkgaXMgZmFsc2UKK1BB
U1Mgc3Vid2ViYXJlYS5pc0VxdWFsKG5ld1N1YndlYmFyZWEpIGlzIGZhbHNlCitQQVNTIG5ld1N1
YndlYmFyZWEuY2hpbGRyZW5Db3VudCA+IDAgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJh
bWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1p
ZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0
cmVlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorCisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0
IGlmIGFuIGlmcmFtZSBsb2FkcyBuZXcgY29udGVudCBhZnRlciBpdHMgYWNjZXNzaWJpbGl0eSBv
YmplY3QgaGFzIGFscmVhZHkgYmVlbiBhY2Nlc3NlZCwgdGhlIGlmcmFtZSBhY2Nlc3NpYmlsaXR5
IG9iamVjdCdzIGRlc2NlbmRhbnRzIGFyZSB0aGUgbmV3IHNjcm9sbCBhcmVhIGFuZCB3ZWIgYXJl
YSwgbm90IHRoZSBvbGQgZGVsZXRlZCBvbmVzLiIpOworCisgICAgICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRvdy5yb290ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7CisgICAgICAgICAgICB3aW5kb3cuYm9keSA9
IHJvb3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgd2luZG93LmlmcmFtZSA9IGJvZHku
Y2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIHdpbmRvdy5zY3Jv
bGxhcmVhID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIHdpbmRvdy5zdWJ3
ZWJhcmVhID0gc2Nyb2xsYXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIH0KKworICAgICAg
ICB3aW5kb3cuaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUi
KTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgd2luZG93Lm5ld0lmcmFtZSA9IGJvZHkuY2hpbGRBdEluZGV4KDEp
LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cubmV3U2Nyb2xsYXJlYSA9
IG5ld0lmcmFtZS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgd2luZG93Lm5ld1N1
YndlYmFyZWEgPSBuZXdTY3JvbGxhcmVhLmNoaWxkQXRJbmRleCgwKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiaWZyYW1lLmlzRXF1YWwobmV3SWZyYW1lKSIpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoInNjcm9sbGFyZWEuaXNFcXVhbChuZXdTY3JvbGxhcmVhKSIp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoInN1YndlYmFyZWEuaXNFcXVhbChuZXdT
dWJ3ZWJhcmVhKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3U3Vid2ViYXJl
YS5jaGlsZHJlbkNvdW50ID4gMCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWJ1
ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSwgZmFsc2UpOwor
CisgICAgICAgIC8vIExvYWQgY29udGVudCBpbnRvIHRoZSBpZnJhbWUuIFRoaXMgd2lsbCB0cmln
Z2VyIHRoZSBldmVudAorICAgICAgICAvLyBoYW5kbGVyIGFib3ZlLCB3aGljaCB3aWxsIGNoZWNr
IHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZQorICAgICAgICAvLyB3YXMgdXBkYXRlZCB3aXRo
IG5ldyBjb250ZW50LgorICAgICAgICB3aW5kb3cuaWZyYW1lRWxlbWVudC5zcmMgPSAiZGF0YTp0
ZXh0L2h0bWwsPGJvZHk+PGJ1dHRvbj5DbGljayBtZTwvYnV0dG9uPjwvYm9keT4iOworCisgICAg
fQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7CisgICAgfSwgZmFsc2UpOworCisgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPkJlZm9yZTwvcD4KKworPGlmcmFtZSBpZD0iaWZy
YW1lIj48L2lmcmFtZT4KKworPHA+QWZ0ZXI8L3A+CisKKzxwPkVuZCBvZiB0ZXN0PC9wPgorCis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114739</attachid>
            <date>2011-11-11 11:17:49 -0800</date>
            <delta_ts>2011-11-11 11:36:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72100-20111111111748.patch</filename>
            <type>text/plain</type>
            <size>15314</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgTmV3IGlmcmFtZSBjb250
ZW50IG1heSBub3QgYmUgcmVmbGVjdGVkIGluIHRoZSBheCB0cmVlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29yZSBpc3N1ZSB3YXMgdGhhdCB3
aGVuIGNoaWxkcmVuQ2hhbmdlZCB3YXMgY2FsbGVkIG9uIGEKKyAgICAgICAgd2ViIGFyZWEgZnJv
bSBhbiBpZnJhbWUgdGhhdCB3YXMganVzdCBkZXRhY2hlZCwgaXQgd2Fzbid0IGNhbGxpbmcKKyAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkIG9uIGl0cyBwYXJlbnQgc2Nyb2xsIGFyZWEsIG9yIHRoYXQg
c2Nyb2xsIGFyZWEncworICAgICAgICBwYXJlbnQgaWZyYW1lIGVsZW1lbnQuIFRvIGZpeCB0aGlz
LCBub3cgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaW1wbGVtZW50cyBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4gYW5kIHBhcmVudE9iamVjdElmRXhpc3RzLAorICAgICAgICBhbmQg
Y2hpbGRyZW5DaGFuZ2VkIGNhbGxzIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbiBvbiBldmVyeSBv
YmplY3QKKyAgICAgICAgaW4gdGhlIHBhcmVudCBjaGFpbiwgbm90IGp1c3QgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdHMuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlm
cmFtZS11cGRhdGVzLWF4dHJlZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpw
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKToKKwogMjAxMS0xMS0xMSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgVGV4dFRy
YWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShy
ZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVh
ZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChXaWRnZXQqKTsKICAgICAKICAgICB2b2lkIHJl
bW92ZShSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHJlbW92ZShXaWRnZXQqKTsKQEAgLTE3MSw3
ICsxNzIsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1
c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAgCiAgICAgQVhJRCBn
ZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBn
ZXQoV2lkZ2V0Kik7CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcm
IHJvbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NCw2
ICs1NjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGls
ZHJlbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw2ICs0MzUsMTAg
QEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OgogICAgIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdAogeworICAgIC8vIFdlYkFyZWEncyBwYXJlbnQgc2hvdWxkIGJlIHRoZSBz
Y3JvbGwgdmlldyBjb250YWluaW5nIGl0LgorICAgIGlmIChpc1dlYkFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KG1fcmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKSk7
CisKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXQocmVuZGVyUGFyZW50T2JqZWN0KCkp
OwogfQogICAgIApAQCAtMzQwMiwzNiArMzQwNiwyNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHNlbnRDaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICAKKyAgICBheE9i
amVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgQVhPYmplY3RD
YWNoZTo6QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworCiAgICAgLy8gR28gdXAgdGhlIGFjY2Vz
c2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBtZXRob2QgaXMKICAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBsYXlvdXRz
LCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAogICAgIC8vIElmIEFYIGVsZW1lbnRzIGFy
ZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRyZWUgd2hp
bGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgogICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIHByb2Nl
c3MgQVJJQSBsaXZlIHJlZ2lvbiBjaGFuZ2VzLgogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gdGhpczsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdElm
RXhpc3RzKCkpIHsKLSAgICAgICAgaWYgKCFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KiBheFBhcmVudCA9IHRvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dChwYXJlbnQpOwotICAgICAgICAKLSAgICAgICAgLy8gU2VuZCB0aGUgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIGZpcnN0IGFjY2Vzc2liaWxpdHkgcmVuZGVyIG9iamVjdCBh
bmNlc3Rvci4KLSAgICAgICAgaWYgKCFzZW50Q2hpbGRyZW5DaGFuZ2VkKSB7Ci0gICAgICAgICAg
ICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRlcmVyKCks
IEFYT2JqZWN0Q2FjaGU6OkFYQ2hpbGRyZW5DaGFuZ2VkLCB0cnVlKTsKLSAgICAgICAgICAgIHNl
bnRDaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBh
eFBhcmVudC0+c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAorICAgICAgICBw
YXJlbnQtPnNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOworCiAgICAgICAgIC8vIFRoZXNlIG5v
dGlmaWNhdGlvbnMgYWx3YXlzIG5lZWQgdG8gYmUgc2VudCBiZWNhdXNlIHNjcmVlbnJlYWRlcnMg
YXJlIHJlbGlhbnQgb24gdGhlbSB0byBwZXJmb3JtLiAKICAgICAgICAgLy8gSW4gb3RoZXIgd29y
ZHMsIHRoZXkgbmVlZCB0byBiZSBzZW50IGV2ZW4gd2hlbiB0aGUgc2NyZWVuIHJlYWRlciBoYXMg
bm90IGFjY2Vzc2VkIHRoaXMgbGl2ZSByZWdpb24gc2luY2UgdGhlIGxhc3QgdXBkYXRlLgogCiAg
ICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBzdXBwb3J0cyBBUklBIGxpdmUgcmVnaW9ucywgdGhl
biBub3RpZnkgdGhlIEFUIG9mIGNoYW5nZXMuCi0gICAgICAgIGlmIChheFBhcmVudC0+c3VwcG9y
dHNBUklBTGl2ZVJlZ2lvbigpKQotICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKGF4UGFyZW50LT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdp
b25DaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYgKHBhcmVudC0+c3VwcG9ydHNBUklBTGl2ZVJl
Z2lvbigpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBh
cmVudCwgcGFyZW50LT5kb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdpb25DaGFu
Z2VkLCB0cnVlKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyBhbiBB
UklBIHRleHQgY29udHJvbCwgbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAgICAgICBpZiAo
YXhQYXJlbnQtPmlzQVJJQVRleHRDb250cm9sKCkgJiYgIWF4UGFyZW50LT5pc05hdGl2ZVRleHRD
b250cm9sKCkgJiYgIWF4UGFyZW50LT5ub2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAg
ICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRl
cmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYg
KHBhcmVudC0+aXNBUklBVGV4dENvbnRyb2woKSAmJiAhcGFyZW50LT5pc05hdGl2ZVRleHRDb250
cm9sKCkgJiYgIXBhcmVudC0+bm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAg
ICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBhcmVudCwgcGFyZW50LT5kb2N1
bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiAgICAgfQogfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
T2JqZWN0KiBtX3JlbmRlcmVyOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fYXJpYVJvbGU7Ci0g
ICAgbXV0YWJsZSBib29sIG1fY2hpbGRyZW5EaXJ0eTsKKyAgICBib29sIG1fY2hpbGRyZW5EaXJ0
eTsKICAgICAKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1l
bnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsKQEAgLTI4MCw2ICsyODAsNyBA
QCBwcml2YXRlOgogICAgIFBsYWluVGV4dFJhbmdlIGFyaWFTZWxlY3RlZFRleHRSYW5nZSgpIGNv
bnN0OwogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQ
b3NpdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7IG1f
Y2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KIAogICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVu
dUJ1dHRvbigpIGNvbnN0OwogICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBj
b25zdDsKQEAgLTMyMCw3ICszMjEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcmlh
TGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAgCiAgICAgYm9vbCBpbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgCiAgICAgbXV0YWJsZSBB
Y2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3KiB2aWV3KQogICAgIDogbV9zY3JvbGxWaWV3KHZp
ZXcpCisgICAgLCBtX2NoaWxkcmVuRGlydHkoZmFsc2UpCiB7CiB9CiAKQEAgLTc0LDYgKzc1LDkg
QEAgV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2lkZ2V0RgogICAgIAogdm9pZCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpCiB7Cisg
ICAgaWYgKG1fY2hpbGRyZW5EaXJ0eSkKKyAgICAgICAgY2xlYXJDaGlsZHJlbigpOworCiAgICAg
aWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRkQ2hpbGRyZW4oKTsKICAgICAKQEAgLTE3
NCwxMCArMTc4LDIyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQoKSktPmZyYW1lKCkt
Pm93bmVyRWxlbWVudCgpOwotICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyUGFydCgpKQot
ICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvd25lci0+cmVuZGVy
UGFydCgpLT5wYXJlbnQoKSk7Ci0gICAgCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJl
cigpKQorICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvd25lci0+
cmVuZGVyZXIoKSk7CisKICAgICByZXR1cm4gMDsKIH0KICAgICAKK0FjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcuZ2V0KCkpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQo
KTsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBh
eE9iamVjdENhY2hlKCktPmdldChvd25lci0+cmVuZGVyZXIoKSk7CisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCShy
ZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDEzIEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2ludCYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgbV9jaGlsZHJlbkRpcnR5
ID0gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycygpOwogICAgIAogICAgIHZpcnR1
YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHdlYkFyZWFPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiB3ZWJBcmVhT2JqZWN0KCk7IH0K
QEAgLTY4LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsVmlldz4gbV9zY3Jv
bGxWaWV3OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3Jv
bGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxi
YXI7CisgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7CiB9OwogCiBpbmxpbmUgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcqIHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk5ODYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0xMSAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBOZXcgaWZyYW1lIGNv
bnRlbnQgbWF5IG5vdCBiZSByZWZsZWN0ZWQgaW4gdGhlIGF4IHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCB0aGF0IG1ha2Vz
IHN1cmUgdGhhdCBpZiB5b3UgZXhwbG9yZSB0aGUgYWNjZXNzaWJpbGl0eQorICAgICAgICB0cmVl
IG9mIGFuIGlmcmFtZSBhbmQgdGhhdCBpZnJhbWUgc3Vic2VxdWVudGx5IGxvYWRzIG5ldyBjb250
ZW50LAorICAgICAgICB0aGUgaWZyYW1lIEFjY2Vzc2liaWxpdHlPYmplY3QncyBkZXNjZW5kYW50
cyBhcmUgdXBkYXRlZCB0byBwb2ludAorICAgICAgICB0byB0aGUgbmV3IGNvbnRlbnQsIG5vdCB0
aGUgb2xkIGNvbnRlbnQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1l
LXVwZGF0ZXMtYXh0cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9sb2FkaW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS5odG1sOiBBZGRlZC4KKwogMjAxMS0x
MS0xMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4
cGVjdCBjaHJvbWl1bSB0byBwYXNzIHRoaXMgdGVzdCBhZnRlciByOTk5NTguCkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmct
aWZyYW1lLXVwZGF0ZXMtYXh0cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitCZWZvcmUKKworCitBZnRlcgor
CitFbmQgb2YgdGVzdAorCitUaGlzIHRlc3RzIHRoYXQgaWYgYW4gaWZyYW1lIGxvYWRzIG5ldyBj
b250ZW50IGFmdGVyIGl0cyBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFj
Y2Vzc2VkLCB0aGUgaWZyYW1lIGFjY2Vzc2liaWxpdHkgb2JqZWN0J3MgZGVzY2VuZGFudHMgYXJl
IHRoZSBuZXcgc2Nyb2xsIGFyZWEgYW5kIHdlYiBhcmVhLCBub3QgdGhlIG9sZCBkZWxldGVkIG9u
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5pc0VxdWFs
KG5ld0lmcmFtZSkgaXMgdHJ1ZQorUEFTUyBzY3JvbGxhcmVhLmlzRXF1YWwobmV3U2Nyb2xsYXJl
YSkgaXMgZmFsc2UKK1BBU1Mgc3Vid2ViYXJlYS5pc0VxdWFsKG5ld1N1YndlYmFyZWEpIGlzIGZh
bHNlCitQQVNTIG5ld1N1YndlYmFyZWEuY2hpbGRyZW5Db3VudCA+IDAgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZy
YW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorCisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGlmIGFuIGlmcmFtZSBsb2FkcyBuZXcgY29udGVudCBhZnRlciBpdHMg
YWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhY2Nlc3NlZCwgdGhlIGlmcmFt
ZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCdzIGRlc2NlbmRhbnRzIGFyZSB0aGUgbmV3IHNjcm9sbCBh
cmVhIGFuZCB3ZWIgYXJlYSwgbm90IHRoZSBvbGQgZGVsZXRlZCBvbmVzLiIpOworCisgICAgICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRv
dy5yb290ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7CisgICAgICAgICAg
ICB3aW5kb3cuYm9keSA9IHJvb3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgd2luZG93
LmlmcmFtZSA9IGJvZHkuY2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5zY3JvbGxhcmVhID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5zdWJ3ZWJhcmVhID0gc2Nyb2xsYXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIH0KKworICAgICAgICB3aW5kb3cuaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93Lm5ld0lmcmFtZSA9IGJvZHku
Y2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
bmV3U2Nyb2xsYXJlYSA9IG5ld0lmcmFtZS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICAg
ICAgd2luZG93Lm5ld1N1YndlYmFyZWEgPSBuZXdTY3JvbGxhcmVhLmNoaWxkQXRJbmRleCgwKTsK
KworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaWZyYW1lLmlzRXF1YWwobmV3SWZyYW1l
KSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoInNjcm9sbGFyZWEuaXNFcXVhbChu
ZXdTY3JvbGxhcmVhKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoInN1YndlYmFy
ZWEuaXNFcXVhbChuZXdTdWJ3ZWJhcmVhKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgibmV3U3Vid2ViYXJlYS5jaGlsZHJlbkNvdW50ID4gMCIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8
L3NwYW4+Jyk7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfSwgZmFsc2UpOworCisgICAgICAgIC8vIExvYWQgY29udGVudCBpbnRvIHRoZSBpZnJhbWUu
IFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBldmVudAorICAgICAgICAvLyBoYW5kbGVyIGFib3ZlLCB3
aGljaCB3aWxsIGNoZWNrIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZQorICAgICAgICAvLyB3
YXMgdXBkYXRlZCB3aXRoIG5ldyBjb250ZW50LgorICAgICAgICB3aW5kb3cuaWZyYW1lRWxlbWVu
dC5zcmMgPSAiZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PGJ1dHRvbj5DbGljayBtZTwvYnV0dG9uPjwv
Ym9keT4iOworCisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7CisgICAgfSwgZmFs
c2UpOworCisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPkJlZm9yZTwvcD4KKwor
PGlmcmFtZSBpZD0iaWZyYW1lIj48L2lmcmFtZT4KKworPHA+QWZ0ZXI8L3A+CisKKzxwPkVuZCBv
ZiB0ZXN0PC9wPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114747</attachid>
            <date>2011-11-11 11:36:51 -0800</date>
            <delta_ts>2011-11-11 18:23:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72100-20111111113650.patch</filename>
            <type>text/plain</type>
            <size>15314</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMTEgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgTmV3IGlmcmFtZSBjb250
ZW50IG1heSBub3QgYmUgcmVmbGVjdGVkIGluIHRoZSBheCB0cmVlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBUaGUgY29yZSBpc3N1ZSB3YXMgdGhhdCB3
aGVuIGNoaWxkcmVuQ2hhbmdlZCB3YXMgY2FsbGVkIG9uIGEKKyAgICAgICAgd2ViIGFyZWEgZnJv
bSBhbiBpZnJhbWUgdGhhdCB3YXMganVzdCBkZXRhY2hlZCwgaXQgd2Fzbid0IGNhbGxpbmcKKyAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkIG9uIGl0cyBwYXJlbnQgc2Nyb2xsIGFyZWEsIG9yIHRoYXQg
c2Nyb2xsIGFyZWEncworICAgICAgICBwYXJlbnQgaWZyYW1lIGVsZW1lbnQuIFRvIGZpeCB0aGlz
LCBub3cgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaW1wbGVtZW50cyBzZXROZWVk
c1RvVXBkYXRlQ2hpbGRyZW4gYW5kIHBhcmVudE9iamVjdElmRXhpc3RzLAorICAgICAgICBhbmQg
Y2hpbGRyZW5DaGFuZ2VkIGNhbGxzIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbiBvbiBldmVyeSBv
YmplY3QKKyAgICAgICAgaW4gdGhlIHBhcmVudCBjaGFpbiwgbm90IGp1c3QgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdHMuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9sb2FkaW5nLWlm
cmFtZS11cGRhdGVzLWF4dHJlZS5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldE5lZWRzVG9VcGRh
dGVDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVDaGlsZHJlbklm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpw
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKToKKwogMjAxMS0xMS0xMSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgVGV4dFRy
YWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShy
ZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVh
ZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChXaWRnZXQqKTsKICAgICAKICAgICB2b2lkIHJl
bW92ZShSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHJlbW92ZShXaWRnZXQqKTsKQEAgLTE3MSw3
ICsxNzIsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1
c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAgCiAgICAgQVhJRCBn
ZXRBWElEKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBn
ZXQoV2lkZ2V0Kik7CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcm
IHJvbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NCw2
ICs1NjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBtX2hhdmVDaGlsZHJlbjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGls
ZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGls
ZHJlbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw2ICs0MzUsMTAg
QEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OgogICAgIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdAogeworICAgIC8vIFdlYkFyZWEncyBwYXJlbnQgc2hvdWxkIGJlIHRoZSBz
Y3JvbGwgdmlldyBjb250YWluaW5nIGl0LgorICAgIGlmIChpc1dlYkFyZWEoKSkKKyAgICAgICAg
cmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0KG1fcmVuZGVyZXItPmZyYW1lKCktPnZpZXcoKSk7
CisKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXQocmVuZGVyUGFyZW50T2JqZWN0KCkp
OwogfQogICAgIApAQCAtMzQwMiwzNiArMzQwNiwyNSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIHNlbnRDaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICAKKyAgICBheE9i
amVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgQVhPYmplY3RD
YWNoZTo6QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworCiAgICAgLy8gR28gdXAgdGhlIGFjY2Vz
c2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBtZXRob2QgaXMKICAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBsYXlvdXRz
LCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAogICAgIC8vIElmIEFYIGVsZW1lbnRzIGFy
ZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRyZWUgd2hp
bGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgogICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIHByb2Nl
c3MgQVJJQSBsaXZlIHJlZ2lvbiBjaGFuZ2VzLgogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gdGhpczsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdElm
RXhpc3RzKCkpIHsKLSAgICAgICAgaWYgKCFwYXJlbnQtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KiBheFBhcmVudCA9IHRvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dChwYXJlbnQpOwotICAgICAgICAKLSAgICAgICAgLy8gU2VuZCB0aGUgY2hpbGRyZW4gY2hhbmdl
ZCBub3RpZmljYXRpb24gb24gdGhlIGZpcnN0IGFjY2Vzc2liaWxpdHkgcmVuZGVyIG9iamVjdCBh
bmNlc3Rvci4KLSAgICAgICAgaWYgKCFzZW50Q2hpbGRyZW5DaGFuZ2VkKSB7Ci0gICAgICAgICAg
ICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRlcmVyKCks
IEFYT2JqZWN0Q2FjaGU6OkFYQ2hpbGRyZW5DaGFuZ2VkLCB0cnVlKTsKLSAgICAgICAgICAgIHNl
bnRDaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBh
eFBhcmVudC0+c2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAorICAgICAgICBw
YXJlbnQtPnNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOworCiAgICAgICAgIC8vIFRoZXNlIG5v
dGlmaWNhdGlvbnMgYWx3YXlzIG5lZWQgdG8gYmUgc2VudCBiZWNhdXNlIHNjcmVlbnJlYWRlcnMg
YXJlIHJlbGlhbnQgb24gdGhlbSB0byBwZXJmb3JtLiAKICAgICAgICAgLy8gSW4gb3RoZXIgd29y
ZHMsIHRoZXkgbmVlZCB0byBiZSBzZW50IGV2ZW4gd2hlbiB0aGUgc2NyZWVuIHJlYWRlciBoYXMg
bm90IGFjY2Vzc2VkIHRoaXMgbGl2ZSByZWdpb24gc2luY2UgdGhlIGxhc3QgdXBkYXRlLgogCiAg
ICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBzdXBwb3J0cyBBUklBIGxpdmUgcmVnaW9ucywgdGhl
biBub3RpZnkgdGhlIEFUIG9mIGNoYW5nZXMuCi0gICAgICAgIGlmIChheFBhcmVudC0+c3VwcG9y
dHNBUklBTGl2ZVJlZ2lvbigpKQotICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKGF4UGFyZW50LT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdp
b25DaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYgKHBhcmVudC0+c3VwcG9ydHNBUklBTGl2ZVJl
Z2lvbigpKQorICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBh
cmVudCwgcGFyZW50LT5kb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWExpdmVSZWdpb25DaGFu
Z2VkLCB0cnVlKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyBhbiBB
UklBIHRleHQgY29udHJvbCwgbm90aWZ5IHRoZSBBVCBvZiBjaGFuZ2VzLgotICAgICAgICBpZiAo
YXhQYXJlbnQtPmlzQVJJQVRleHRDb250cm9sKCkgJiYgIWF4UGFyZW50LT5pc05hdGl2ZVRleHRD
b250cm9sKCkgJiYgIWF4UGFyZW50LT5ub2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAg
ICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oYXhQYXJlbnQtPnJlbmRl
cmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgaWYg
KHBhcmVudC0+aXNBUklBVGV4dENvbnRyb2woKSAmJiAhcGFyZW50LT5pc05hdGl2ZVRleHRDb250
cm9sKCkgJiYgIXBhcmVudC0+bm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICAg
ICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHBhcmVudCwgcGFyZW50LT5kb2N1
bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiAgICAgfQogfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk5OTMyKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
T2JqZWN0KiBtX3JlbmRlcmVyOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fYXJpYVJvbGU7Ci0g
ICAgbXV0YWJsZSBib29sIG1fY2hpbGRyZW5EaXJ0eTsKKyAgICBib29sIG1fY2hpbGRyZW5EaXJ0
eTsKICAgICAKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1l
bnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsKQEAgLTI4MCw2ICsyODAsNyBA
QCBwcml2YXRlOgogICAgIFBsYWluVGV4dFJhbmdlIGFyaWFTZWxlY3RlZFRleHRSYW5nZSgpIGNv
bnN0OwogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQ
b3NpdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSop
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSB7IG1f
Y2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KIAogICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVu
dUJ1dHRvbigpIGNvbnN0OwogICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBj
b25zdDsKQEAgLTMyMCw3ICszMjEsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcmlh
TGl2ZVJlZ2lvbkJ1c3koKSBjb25zdDsgICAgCiAgICAgCiAgICAgYm9vbCBpbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KCkgY29uc3QgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgCiAgICAgbXV0YWJsZSBB
Y2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CShyZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3KiB2aWV3KQogICAgIDogbV9zY3JvbGxWaWV3KHZp
ZXcpCisgICAgLCBtX2NoaWxkcmVuRGlydHkoZmFsc2UpCiB7CiB9CiAKQEAgLTc0LDYgKzc1LDkg
QEAgV2lkZ2V0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2lkZ2V0RgogICAgIAogdm9pZCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpCiB7Cisg
ICAgaWYgKG1fY2hpbGRyZW5EaXJ0eSkKKyAgICAgICAgY2xlYXJDaGlsZHJlbigpOworCiAgICAg
aWYgKCFtX2hhdmVDaGlsZHJlbikKICAgICAgICAgYWRkQ2hpbGRyZW4oKTsKICAgICAKQEAgLTE3
NCwxMCArMTc4LDIyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ciA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KG1fc2Nyb2xsVmlldy5nZXQoKSktPmZyYW1lKCkt
Pm93bmVyRWxlbWVudCgpOwotICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyUGFydCgpKQot
ICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvd25lci0+cmVuZGVy
UGFydCgpLT5wYXJlbnQoKSk7Ci0gICAgCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJl
cigpKQorICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShvd25lci0+
cmVuZGVyZXIoKSk7CisKICAgICByZXR1cm4gMDsKIH0KICAgICAKK0FjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPihtX3Njcm9sbFZpZXcuZ2V0KCkpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQo
KTsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBh
eE9iamVjdENhY2hlKCktPmdldChvd25lci0+cmVuZGVyZXIoKSk7CisgICAgCisgICAgcmV0dXJu
IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCShy
ZXZpc2lvbiA5OTkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDEzIEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2ludCYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgbV9jaGlsZHJlbkRpcnR5
ID0gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFycygpOwogICAgIAogICAgIHZpcnR1
YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0OwogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHdlYkFyZWFPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiB3ZWJBcmVhT2JqZWN0KCk7IH0K
QEAgLTY4LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsVmlldz4gbV9zY3Jv
bGxWaWV3OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3Jv
bGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxi
YXI7CisgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7CiB9OwogCiBpbmxpbmUgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcqIHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk5ODYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0xMSAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBOZXcgaWZyYW1lIGNv
bnRlbnQgbWF5IG5vdCBiZSByZWZsZWN0ZWQgaW4gdGhlIGF4IHRyZWUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCB0aGF0IG1ha2Vz
IHN1cmUgdGhhdCBpZiB5b3UgZXhwbG9yZSB0aGUgYWNjZXNzaWJpbGl0eQorICAgICAgICB0cmVl
IG9mIGFuIGlmcmFtZSBhbmQgdGhhdCBpZnJhbWUgc3Vic2VxdWVudGx5IGxvYWRzIG5ldyBjb250
ZW50LAorICAgICAgICB0aGUgaWZyYW1lIEFjY2Vzc2liaWxpdHlPYmplY3QncyBkZXNjZW5kYW50
cyBhcmUgdXBkYXRlZCB0byBwb2ludAorICAgICAgICB0byB0aGUgbmV3IGNvbnRlbnQsIG5vdCB0
aGUgb2xkIGNvbnRlbnQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1l
LXVwZGF0ZXMtYXh0cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9sb2FkaW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS5odG1sOiBBZGRlZC4KKwogMjAxMS0x
MS0xMSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4
cGVjdCBjaHJvbWl1bSB0byBwYXNzIHRoaXMgdGVzdCBhZnRlciByOTk5NTguCkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmct
aWZyYW1lLXVwZGF0ZXMtYXh0cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitCZWZvcmUKKworCitBZnRlcgor
CitFbmQgb2YgdGVzdAorCitUaGlzIHRlc3RzIHRoYXQgaWYgYW4gaWZyYW1lIGxvYWRzIG5ldyBj
b250ZW50IGFmdGVyIGl0cyBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFj
Y2Vzc2VkLCB0aGUgaWZyYW1lIGFjY2Vzc2liaWxpdHkgb2JqZWN0J3MgZGVzY2VuZGFudHMgYXJl
IHRoZSBuZXcgc2Nyb2xsIGFyZWEgYW5kIHdlYiBhcmVhLCBub3QgdGhlIG9sZCBkZWxldGVkIG9u
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5pc0VxdWFs
KG5ld0lmcmFtZSkgaXMgdHJ1ZQorUEFTUyBzY3JvbGxhcmVhLmlzRXF1YWwobmV3U2Nyb2xsYXJl
YSkgaXMgZmFsc2UKK1BBU1Mgc3Vid2ViYXJlYS5pc0VxdWFsKG5ld1N1YndlYmFyZWEpIGlzIGZh
bHNlCitQQVNTIG5ld1N1YndlYmFyZWEuY2hpbGRyZW5Db3VudCA+IDAgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbG9hZGluZy1pZnJhbWUtdXBkYXRlcy1heHRyZWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZy
YW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorCisgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGlmIGFuIGlmcmFtZSBsb2FkcyBuZXcgY29udGVudCBhZnRlciBpdHMg
YWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBhY2Nlc3NlZCwgdGhlIGlmcmFt
ZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCdzIGRlc2NlbmRhbnRzIGFyZSB0aGUgbmV3IHNjcm9sbCBh
cmVhIGFuZCB3ZWIgYXJlYSwgbm90IHRoZSBvbGQgZGVsZXRlZCBvbmVzLiIpOworCisgICAgICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHdpbmRv
dy5yb290ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7CisgICAgICAgICAg
ICB3aW5kb3cuYm9keSA9IHJvb3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgd2luZG93
LmlmcmFtZSA9IGJvZHkuY2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5zY3JvbGxhcmVhID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5zdWJ3ZWJhcmVhID0gc2Nyb2xsYXJlYS5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIH0KKworICAgICAgICB3aW5kb3cuaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93Lm5ld0lmcmFtZSA9IGJvZHku
Y2hpbGRBdEluZGV4KDEpLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
bmV3U2Nyb2xsYXJlYSA9IG5ld0lmcmFtZS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICAg
ICAgd2luZG93Lm5ld1N1YndlYmFyZWEgPSBuZXdTY3JvbGxhcmVhLmNoaWxkQXRJbmRleCgwKTsK
KworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaWZyYW1lLmlzRXF1YWwobmV3SWZyYW1l
KSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoInNjcm9sbGFyZWEuaXNFcXVhbChu
ZXdTY3JvbGxhcmVhKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoInN1YndlYmFy
ZWEuaXNFcXVhbChuZXdTdWJ3ZWJhcmVhKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgibmV3U3Vid2ViYXJlYS5jaGlsZHJlbkNvdW50ID4gMCIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8
L3NwYW4+Jyk7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfSwgZmFsc2UpOworCisgICAgICAgIC8vIExvYWQgY29udGVudCBpbnRvIHRoZSBpZnJhbWUu
IFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBldmVudAorICAgICAgICAvLyBoYW5kbGVyIGFib3ZlLCB3
aGljaCB3aWxsIGNoZWNrIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZQorICAgICAgICAvLyB3
YXMgdXBkYXRlZCB3aXRoIG5ldyBjb250ZW50LgorICAgICAgICB3aW5kb3cuaWZyYW1lRWxlbWVu
dC5zcmMgPSAiZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PGJ1dHRvbj5DbGljayBtZTwvYnV0dG9uPjwv
Ym9keT4iOworCisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7CisgICAgfSwgZmFs
c2UpOworCisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPkJlZm9yZTwvcD4KKwor
PGlmcmFtZSBpZD0iaWZyYW1lIj48L2lmcmFtZT4KKworPHA+QWZ0ZXI8L3A+CisKKzxwPkVuZCBv
ZiB0ZXN0PC9wPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXVwZGF0ZXMtYXh0cmVlLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>