<?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>143916</bug_id>
          
          <creation_ts>2015-04-18 00:32:33 -0700</creation_ts>
          <short_desc>Implement immediate action support for tel: and mailto: URLs</short_desc>
          <delta_ts>2015-04-20 11:48:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086531</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-18 00:32:33 -0700</bug_when>
    <thetext>Implement immediate action support for tel: and mailto: URLs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086532</commentid>
    <comment_count>1</comment_count>
      <attachid>251086</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-18 00:33:15 -0700</bug_when>
    <thetext>Created attachment 251086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086533</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-18 00:34:37 -0700</bug_when>
    <thetext>Attachment 251086 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:415:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:416:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:437:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:438:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:441:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086534</commentid>
    <comment_count>3</comment_count>
      <attachid>251087</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-18 00:42:09 -0700</bug_when>
    <thetext>Created attachment 251087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086535</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-18 00:42:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/19721711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086536</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-18 00:45:34 -0700</bug_when>
    <thetext>Attachment 251087 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:415:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:416:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebView/WebImmediateActionController.mm:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:437:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:438:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:441:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086574</commentid>
    <comment_count>6</comment_count>
      <attachid>251087</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-18 12:09:11 -0700</bug_when>
    <thetext>Comment on attachment 251087
Patch

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

&gt; Source/WebKit/mac/WebView/WebImmediateActionController.mm:232
&gt; +            RefPtr&lt;TextIndicator&gt; linkTextIndicator = TextIndicator::createWithRange(*linkRange, TextIndicatorPresentationTransition::FadeIn);

Code you just indented: I would call this just indicator or textIndicator; local variables don’t need globally clear names.

&gt; Source/WebKit/mac/WebView/WebImmediateActionController.mm:235
&gt; +            RetainPtr&lt;QLPreviewMenuItem&gt; qlPreviewLinkItem = [NSMenuItem standardQuickLookMenuItem];

Code you just indented: Why does this use a RetainPtr? Does not need one. I would call this just item or menuItem. Local variables don’t need globally clear names.

&gt; Source/WebKit/mac/WebView/WebImmediateActionController.mm:245
&gt; +        if (id&lt;NSImmediateActionAnimationController&gt; animationController = [self _animationControllerForDataDetectedText]) {

Can this use auto?

&gt; Source/WebKit/mac/WebView/WebImmediateActionController.mm:413
&gt; +    RefPtr&lt;TextIndicator&gt; linkTextIndicator = TextIndicator::createWithRange(*linkRange, TextIndicatorPresentationTransition::FadeIn);

Shorter name as I suggested above?

&gt; Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:294
&gt; +            RetainPtr&lt;QLPreviewMenuItem&gt; qlPreviewLinkItem = [NSMenuItem standardQuickLookMenuItem];
&gt; +            [qlPreviewLinkItem setPreviewStyle:QLPreviewStylePopover];
&gt; +            [qlPreviewLinkItem setDelegate:self];
&gt; +            _currentQLPreviewMenuItem = qlPreviewLinkItem.get();

Really lame that we simply have this duplicated for legacy and modern WebKit. Need a code sharing strategy to avoid doing more and more of this over time for features like this one. All my comments above apply here as well, given that!

&gt; Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:428
&gt; +    RetainPtr&lt;DDActionContext&gt; actionContext = adoptNS([allocDDActionContextInstance() init]);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086631</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-19 01:03:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 251087 [details]
&gt; Patch
&gt; 

All the other comments sound good to me!

&gt; Really lame that we simply have this duplicated for legacy and modern
&gt; WebKit. Need a code sharing strategy to avoid doing more and more of this
&gt; over time for features like this one. All my comments above apply here as
&gt; well, given that!

I wholeheartedly agree; the maintenance burden has already been significant. I have a plan for a merger, but haven&apos;t had a chance to enact it, and now we&apos;ve spent months making changes in two places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086854</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-20 11:48:42 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183019</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251086</attachid>
            <date>2015-04-18 00:33:15 -0700</date>
            <delta_ts>2015-04-18 00:42:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143916-20150418003216.patch</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTEzMDU5Njlj
OTgxZmE2YmM2MmUyOTYwNmQ4NmI0NWFlNjBmNjg5YS4uMGIwNmY5ZTNmNzcxYjRkYTFjYjk4ODEy
NzM3NmRiNGQ0M2Y1MDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1
LTA0LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBpbW1lZGlhdGUgYWN0aW9uIHN1cHBvcnQgZm9yIHRlbDogYW5kIG1haWx0bzog
VVJMcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
OTE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTcyMTcxMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHRd
KToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29u
dHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciBfbWVudUl0ZW1Gb3JEYXRhRGV0ZWN0ZWRUZXh0XSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICBBZGQgX2Fu
aW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rIGFuZCB1c2UgaXQgd2hlbgorICAg
ICAgICBidWlsZGluZyBpbW1lZGlhdGUgYWN0aW9ucyBmb3IgdGVsOiBhbmQgbWFpbHRvOiBsaW5r
cy4KKwogMjAxNS0wNC0xNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogU1ZHIGRvZXMgbm90IHN1cHBvcnQgbGluayBkcmFnZ2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDUwZDY3YzFlOWRkZTViNTBkNGFlZjRjNGYwOTM4NDZjOWNkMjdhNzIuLjIxN2Yy
YWNlZTU2ZGQ1ZTE5MTA5OWMwYWM5YWU3YTFkNDI3MTA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNS0wNC0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgaW1tZWRpYXRlIGFjdGlvbiBzdXBwb3J0IGZvciB0ZWw6
IGFuZCBtYWlsdG86IFVSTHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzkxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk3MjE3MTE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICgtW1dL
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRl
Y3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua10pOgorICAgICAgICAoLVtXS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgX21lbnVJdGVtRm9yRGF0YURldGVjdGVkVGV4dF0pOiBEZWxl
dGVkLgorICAgICAgICBBZGQgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5r
IGFuZCB1c2UgaXQgd2hlbgorICAgICAgICBidWlsZGluZyBpbW1lZGlhdGUgYWN0aW9ucyBmb3Ig
dGVsOiBhbmQgbWFpbHRvOiBsaW5rcy4KKwogMjAxNS0wNC0xNyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGllbnRzIHNvbWV0aW1lcyBibG9jayBm
b3IgNTAwbXMgaW4gd2FpdEZvclBvc3NpYmxlR2VvbWV0cnlVcGRhdGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0KaW5kZXggODY4MWIyOTFkY2IzZjEwZDJhNTE1MTI3ZGMwZmFhN2ZkZWMzNmNiMy4uNDBhOGEw
YjlkYWUyYmQxYzA5ZjU0YzYzZDNmMzY0YWUxZDBkYzU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpA
QCAtMjE0LDI1ICsyMTQsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB7CiAgICAgTlNV
UkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIE5TU3RyaW5n
ICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgIGlmICh1cmwg
JiYgV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykgJiYg
X2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKSB7Ci0gICAgICAgIF90eXBlID0gV2ViSW1tZWRp
YXRlQWN0aW9uTGlua1ByZXZpZXc7CisgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxF
bGVtZW50KCkpIHsKKyAgICAgICAgaWYgKHByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJt
YWlsdG8iKSkgeworICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9M
aW5rOworICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0
YURldGVjdGVkTGlua107CisgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtS
YW5nZSA9IHJhbmdlT2ZDb250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKLSAg
ICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGlj
YXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpGYWRlSW4pOwotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0
b3I6bGlua1RleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgICAgIGlmIChwcm90
b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAidGVsIikpIHsKKyAgICAgICAgICAgIF90eXBlID0g
V2ViSW1tZWRpYXRlQWN0aW9uVGVsTGluazsKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiBfYW5p
bWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVVUkxTdHJpbmcp
KSB7CisgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3Owog
Ci0gICAgICAgIFJldGFpblB0cjxRTFByZXZpZXdNZW51SXRlbT4gcWxQcmV2aWV3TGlua0l0ZW0g
PSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKLSAgICAgICAgW3FsUHJl
dmlld0xpbmtJdGVtIHNldFByZXZpZXdTdHlsZTpRTFByZXZpZXdTdHlsZVBvcG92ZXJdOwotICAg
ICAgICBbcWxQcmV2aWV3TGlua0l0ZW0gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgICAgIF9jdXJy
ZW50UUxQcmV2aWV3TWVudUl0ZW0gPSBxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKLSAgICAgICAg
cmV0dXJuIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilxbFByZXZp
ZXdMaW5rSXRlbS5nZXQoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOworICAgICAgICAg
ICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRv
cjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpGYWRlSW4pOworICAgICAgICAgICAgW193ZWJWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOmxpbmtUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk9dOworCisgICAgICAgICAgICBS
ZXRhaW5QdHI8UUxQcmV2aWV3TWVudUl0ZW0+IHFsUHJldmlld0xpbmtJdGVtID0gW05TTWVudUl0
ZW0gc3RhbmRhcmRRdWlja0xvb2tNZW51SXRlbV07CisgICAgICAgICAgICBbcWxQcmV2aWV3TGlu
a0l0ZW0gc2V0UHJldmlld1N0eWxlOlFMUHJldmlld1N0eWxlUG9wb3Zlcl07CisgICAgICAgICAg
ICBbcWxQcmV2aWV3TGlua0l0ZW0gc2V0RGVsZWdhdGU6c2VsZl07CisgICAgICAgICAgICBfY3Vy
cmVudFFMUHJldmlld01lbnVJdGVtID0gcWxQcmV2aWV3TGlua0l0ZW0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KXFs
UHJldmlld0xpbmtJdGVtLmdldCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgTm9kZSogbm9k
ZSA9IF9oaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICgobm9kZSAmJiBub2RlLT5p
c1RleHROb2RlKCkpIHx8IF9oaXRUZXN0UmVzdWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJv
bEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoTlNNZW51SXRlbSAqaW1tZWRpYXRlQWN0aW9uSXRl
bSA9IFtzZWxmIF9tZW51SXRlbUZvckRhdGFEZXRlY3RlZFRleHRdKSB7CisgICAgICAgIGlmIChp
ZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+IGFuaW1hdGlvbkNvbnRyb2xs
ZXIgPSBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHRdKSB7CiAg
ICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbkRhdGFEZXRlY3RlZEl0ZW07Ci0g
ICAgICAgICAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
cj4paW1tZWRpYXRlQWN0aW9uSXRlbTsKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25Db250
cm9sbGVyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5p
bWF0aW9uQ29udHJvbGxlcj4gZGVmYXVsdFRleHRDb250cm9sbGVyID0gW3NlbGYgX2FuaW1hdGlv
bkNvbnRyb2xsZXJGb3JUZXh0XSkgewpAQCAtMzM3LDcgKzM0OSw3IEBAIHN0YXRpYyBJbnRSZWN0
IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2RlKiBub2Rl
KQogCiAjcHJhZ21hIG1hcmsgRGF0YSBEZXRlY3RvcnMgYWN0aW9ucwogCi0tIChOU01lbnVJdGVt
ICopX21lbnVJdGVtRm9yRGF0YURldGVjdGVkVGV4dAorLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9u
QW5pbWF0aW9uQ29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRU
ZXh0CiB7CiAgICAgUmVmUHRyPFJhbmdlPiBkZXRlY3RlZERhdGFSYW5nZTsKICAgICBGbG9hdFJl
Y3QgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CkBAIC0zODUsNiArMzk3LDM3IEBAIHN0YXRpYyBJ
bnRSZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2Rl
KiBub2RlKQogICAgIHJldHVybiBtZW51SXRlbXMubGFzdE9iamVjdDsKIH0KIAorLSAoaWQgPE5T
SW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJG
b3JEYXRhRGV0ZWN0ZWRMaW5rCit7CisgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0
aW9uQ29udGV4dCA9IGFkb3B0TlMoW2FsbG9jRERBY3Rpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0
XSk7CisKKyAgICBpZiAoIWFjdGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBbYWN0aW9uQ29udGV4dCBzZXRBbHRNb2RlOllFU107CisgICAgW2FjdGlvbkNvbnRleHQgc2V0
SW1tZWRpYXRlOllFU107CisKKyAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZD
b250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKKyAgICBpZiAoIWxpbmtSYW5n
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxp
bmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFu
Z2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOworCisgICAg
X2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlvbkNvbnRleHQgY29udGV4dEZvclZpZXc6X3dl
YlZpZXcgYWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpeKCkgeworICAgIH0g
aW50ZXJhY3Rpb25DaGFuZ2VkSGFuZGxlcjpeKCkgeworICAgICAgICBbX3dlYlZpZXcgX3NldFRl
eHRJbmRpY2F0b3I6bGlua1RleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgfSBp
bnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7CisgICAgICAgIFtfd2ViVmlldyBfY2xlYXJU
ZXh0SW5kaWNhdG9yXTsKKyAgICB9XTsKKworICAgIFtfY3VycmVudEFjdGlvbkNvbnRleHQgc2V0
SGlnaGxpZ2h0RnJhbWU6W193ZWJWaWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOmxpbmtS
YW5nZS0+Ym91bmRpbmdSZWN0KCldXTsKKworICAgIE5TQXJyYXkgKm1lbnVJdGVtcyA9IFtbZ2V0
RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gbWVudUl0ZW1zRm9yUmVzdWx0
OltfY3VycmVudEFjdGlvbkNvbnRleHQgbWFpblJlc3VsdF0gYWN0aW9uQ29udGV4dDpfY3VycmVu
dEFjdGlvbkNvbnRleHQuZ2V0KCldOworICAgIGlmIChtZW51SXRlbXMuY291bnQgIT0gMSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbWVudUl0ZW1zLmxhc3RPYmplY3Q7
Cit9CisKICNwcmFnbWEgbWFyayBUZXh0IGFjdGlvbgogCiBzdGF0aWMgRGljdGlvbmFyeVBvcHVw
SW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFu
Z2UsIE5TRGljdGlvbmFyeSAqb3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA2NjdhNzg5MWZlYWU0MzA0Yzk5NWQx
ZGM5NmU1NDlmM2I0ODdhYzNkLi5iNjFjNzczYjc5MzBjOTJiY2E1MWUyYmRhOWFhZTVmZGNiYTc0
MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJp
dmF0ZS5oCkBAIC0xNDksNyArMTQ5LDkgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXZWJJbW1lZGlh
dGVBY3Rpb25Ob25lID0gMCwKICAgICBXZWJJbW1lZGlhdGVBY3Rpb25MaW5rUHJldmlldywKICAg
ICBXZWJJbW1lZGlhdGVBY3Rpb25EYXRhRGV0ZWN0ZWRJdGVtLAotICAgIFdlYkltbWVkaWF0ZUFj
dGlvblRleHQKKyAgICBXZWJJbW1lZGlhdGVBY3Rpb25UZXh0LAorICAgIFdlYkltbWVkaWF0ZUFj
dGlvbk1haWx0b0xpbmssCisgICAgV2ViSW1tZWRpYXRlQWN0aW9uVGVsTGluawogfSBXZWJJbW1l
ZGlhdGVBY3Rpb25UeXBlOwogCiAvLyBNZXNzYWdlIFNvdXJjZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaAppbmRleCBkMzgw
MDc3N2FlZjA5YmIyZWU0MDlkMTFhMDE0NGU5NjI0OWM3ZWI3Li4zNGZiMzY4MTNlZDgyNTAyOTE0
YWQ3Mjc4YjhkNDdiMTM5MmNhZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSB7
CiAgICAga1dLSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXcsCiAgICAga1dLSW1tZWRpYXRlQWN0
aW9uRGF0YURldGVjdGVkSXRlbSwKICAgICBrV0tJbW1lZGlhdGVBY3Rpb25Mb29rdXBUZXh0LAor
ICAgIGtXS0ltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbmssCisgICAga1dLSW1tZWRpYXRlQWN0aW9u
VGVsTGluawogfTsKIHR5cGVkZWYgdWludDMyX3QgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBjNGM4YmVhM2FmMGMzZWRjODkyNDdjYWMxMGZiNGNk
YmM3ZDY2Zjg2Li5jZjk0Mzc5M2RlZGRhYzI2N2FiNzc2ZDkyYWMyYTRlZTAzNjQ4Mjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjc0LDIzICsyNzQsMzYgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtV
UkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBpZiAoIWFic29sdXRl
TGlua1VSTC5pc0VtcHR5KCkgJiYgV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNv
bHV0ZUxpbmtVUkwpKSB7Ci0gICAgICAgIF90eXBlID0ga1dLSW1tZWRpYXRlQWN0aW9uTGlua1By
ZXZpZXc7CisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgIm1haWx0byIpKSB7CisgICAgICAgICAgICBf
dHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbms7CisgICAgICAgICAgICByZXR1cm4g
W3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7Cisg
ICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CisgICAgICAgICAg
ICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAgICAgICAgIF90eXBlID0ga1dLSW1tZWRpYXRlQWN0
aW9uTGlua1ByZXZpZXc7CiAKLSAgICAgICAgaWYgKFRleHRJbmRpY2F0b3IgKnRleHRJbmRpY2F0
b3IgPSBfaGl0VGVzdFJlc3VsdERhdGEubGlua1RleHRJbmRpY2F0b3IuZ2V0KCkpCi0gICAgICAg
ICAgICBfcGFnZS0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLT5kYXRhKCksIGZhbHNl
KTsKKyAgICAgICAgICAgIFJldGFpblB0cjxRTFByZXZpZXdNZW51SXRlbT4gcWxQcmV2aWV3TGlu
a0l0ZW0gPSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKKyAgICAgICAg
ICAgIFtxbFByZXZpZXdMaW5rSXRlbSBzZXRQcmV2aWV3U3R5bGU6UUxQcmV2aWV3U3R5bGVQb3Bv
dmVyXTsKKyAgICAgICAgICAgIFtxbFByZXZpZXdMaW5rSXRlbSBzZXREZWxlZ2F0ZTpzZWxmXTsK
KyAgICAgICAgICAgIF9jdXJyZW50UUxQcmV2aWV3TWVudUl0ZW0gPSBxbFByZXZpZXdMaW5rSXRl
bS5nZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8UUxQcmV2aWV3TWVudUl0ZW0+IHFsUHJldmll
d0xpbmtJdGVtID0gW05TTWVudUl0ZW0gc3RhbmRhcmRRdWlja0xvb2tNZW51SXRlbV07Ci0gICAg
ICAgIFtxbFByZXZpZXdMaW5rSXRlbSBzZXRQcmV2aWV3U3R5bGU6UUxQcmV2aWV3U3R5bGVQb3Bv
dmVyXTsKLSAgICAgICAgW3FsUHJldmlld0xpbmtJdGVtIHNldERlbGVnYXRlOnNlbGZdOwotICAg
ICAgICBfY3VycmVudFFMUHJldmlld01lbnVJdGVtID0gcWxQcmV2aWV3TGlua0l0ZW0uZ2V0KCk7
Ci0gICAgICAgIHJldHVybiAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
PilxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKKyAgICAgICAgICAgIGlmIChUZXh0SW5kaWNhdG9y
ICp0ZXh0SW5kaWNhdG9yID0gX2hpdFRlc3RSZXN1bHREYXRhLmxpbmtUZXh0SW5kaWNhdG9yLmdl
dCgpKQorICAgICAgICAgICAgICAgIF9wYWdlLT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0
b3ItPmRhdGEoKSwgZmFsc2UpOworCisgICAgICAgICAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRl
QWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pcWxQcmV2aWV3TGlua0l0ZW0uZ2V0KCk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoaGl0VGVzdFJlc3VsdC0+aXNUZXh0Tm9kZSgpIHx8IGhp
dFRlc3RSZXN1bHQtPmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSkgewotICAg
ICAgICBpZiAoTlNNZW51SXRlbSAqaW1tZWRpYXRlQWN0aW9uSXRlbSA9IFtzZWxmIF9tZW51SXRl
bUZvckRhdGFEZXRlY3RlZFRleHRdKSB7CisgICAgICAgIGlmIChpZDxOU0ltbWVkaWF0ZUFjdGlv
bkFuaW1hdGlvbkNvbnRyb2xsZXI+IGltbWVkaWF0ZUFjdGlvbkl0ZW0gPSBbc2VsZiBfYW5pbWF0
aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHRdKSB7CiAgICAgICAgICAgICBfdHlwZSA9
IGtXS0ltbWVkaWF0ZUFjdGlvbkRhdGFEZXRlY3RlZEl0ZW07Ci0gICAgICAgICAgICByZXR1cm4g
KGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4paW1tZWRpYXRlQWN0aW9u
SXRlbTsKKyAgICAgICAgICAgIHJldHVybiBpbW1lZGlhdGVBY3Rpb25JdGVtOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4g
dGV4dEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvclRl
eHRdKSB7CkBAIC0zNzQsNyArMzg3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogI3By
YWdtYSBtYXJrIERhdGEgRGV0ZWN0b3JzIGFjdGlvbnMKIAotLSAoTlNNZW51SXRlbSAqKV9tZW51
SXRlbUZvckRhdGFEZXRlY3RlZFRleHQKKy0gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRUZXh0CiB7CiAg
ICAgRERBY3Rpb25Db250ZXh0ICphY3Rpb25Db250ZXh0ID0gX2hpdFRlc3RSZXN1bHREYXRhLmRl
dGVjdGVkRGF0YUFjdGlvbkNvbnRleHQuZ2V0KCk7CiAgICAgaWYgKCFhY3Rpb25Db250ZXh0KQpA
QCAtNDA3LDcgKzQyMCwzNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIGlmIChtZW51
SXRlbXMuY291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBtZW51
SXRlbXMubGFzdE9iamVjdDsKKyAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0
aW9uQ29udHJvbGxlcj4pbWVudUl0ZW1zLmxhc3RPYmplY3Q7Cit9CisKKy0gKGlkPE5TSW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRh
RGV0ZWN0ZWRMaW5rCit7CisgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0aW9uQ29u
dGV4dCA9IGFkb3B0TlMoW2FsbG9jRERBY3Rpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CisK
KyAgICBpZiAoIWFjdGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbYWN0
aW9uQ29udGV4dCBzZXRBbHRNb2RlOllFU107CisgICAgW2FjdGlvbkNvbnRleHQgc2V0SW1tZWRp
YXRlOllFU107CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlID0gX3BhZ2U7CisgICAg
X2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlvbkNvbnRleHQgY29udGV4dEZvclZpZXc6X3dr
VmlldyBhbHRNb2RlOllFUyBpbnRlcmFjdGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7CisgICAgfSBp
bnRlcmFjdGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7CisgICAgICAgIGlmIChfaGl0VGVzdFJlc3Vs
dERhdGEubGlua1RleHRJbmRpY2F0b3IpCisgICAgICAgICAgICBwYWdlLT5zZXRUZXh0SW5kaWNh
dG9yKF9oaXRUZXN0UmVzdWx0RGF0YS5saW5rVGV4dEluZGljYXRvci0+ZGF0YSgpLCBmYWxzZSk7
CisgICAgfSBpbnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7CisgICAgICAgIFtzZWxmIF9j
bGVhckltbWVkaWF0ZUFjdGlvblN0YXRlXTsKKyAgICB9XTsKKworICAgIFtfY3VycmVudEFjdGlv
bkNvbnRleHQgc2V0SGlnaGxpZ2h0RnJhbWU6W193a1ZpZXcud2luZG93IGNvbnZlcnRSZWN0VG9T
Y3JlZW46W193a1ZpZXcgY29udmVydFJlY3Q6X2hpdFRlc3RSZXN1bHREYXRhLmVsZW1lbnRCb3Vu
ZGluZ0JveCB0b1ZpZXc6bmlsXV1dOworCisgICAgUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IGhp
dFRlc3RSZXN1bHQgPSBbc2VsZiBfd2ViSGl0VGVzdFJlc3VsdF07CisgICAgTlNBcnJheSAqbWVu
dUl0ZW1zID0gW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBtZW51
SXRlbXNGb3JUYXJnZXRVUkw6aGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVMaW5rVVJMKCkgYWN0aW9u
Q29udGV4dDpfY3VycmVudEFjdGlvbkNvbnRleHQuZ2V0KCldOworCisgICAgaWYgKG1lbnVJdGVt
cy5jb3VudCAhPSAxKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIChpZDxOU0lt
bWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KW1lbnVJdGVtcy5sYXN0T2JqZWN0Owog
fQogCiAjcHJhZ21hIG1hcmsgVGV4dCBhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251087</attachid>
            <date>2015-04-18 00:42:09 -0700</date>
            <delta_ts>2015-04-18 12:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143916-20150418004110.patch</filename>
            <type>text/plain</type>
            <size>13532</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTEzMDU5Njlj
OTgxZmE2YmM2MmUyOTYwNmQ4NmI0NWFlNjBmNjg5YS4uMGIwNmY5ZTNmNzcxYjRkYTFjYjk4ODEy
NzM3NmRiNGQ0M2Y1MDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1
LTA0LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBpbW1lZGlhdGUgYWN0aW9uIHN1cHBvcnQgZm9yIHRlbDogYW5kIG1haWx0bzog
VVJMcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
OTE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTcyMTcxMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHRd
KToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29u
dHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdKToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciBfbWVudUl0ZW1Gb3JEYXRhRGV0ZWN0ZWRUZXh0XSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICBBZGQgX2Fu
aW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rIGFuZCB1c2UgaXQgd2hlbgorICAg
ICAgICBidWlsZGluZyBpbW1lZGlhdGUgYWN0aW9ucyBmb3IgdGVsOiBhbmQgbWFpbHRvOiBsaW5r
cy4KKwogMjAxNS0wNC0xNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogU1ZHIGRvZXMgbm90IHN1cHBvcnQgbGluayBkcmFnZ2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDUwZDY3YzFlOWRkZTViNTBkNGFlZjRjNGYwOTM4NDZjOWNkMjdhNzIuLjIxN2Yy
YWNlZTU2ZGQ1ZTE5MTA5OWMwYWM5YWU3YTFkNDI3MTA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNS0wNC0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgaW1tZWRpYXRlIGFjdGlvbiBzdXBwb3J0IGZvciB0ZWw6
IGFuZCBtYWlsdG86IFVSTHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzkxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk3MjE3MTE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICgtW1dL
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRl
Y3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua10pOgorICAgICAgICAoLVtXS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgX21lbnVJdGVtRm9yRGF0YURldGVjdGVkVGV4dF0pOiBEZWxl
dGVkLgorICAgICAgICBBZGQgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5r
IGFuZCB1c2UgaXQgd2hlbgorICAgICAgICBidWlsZGluZyBpbW1lZGlhdGUgYWN0aW9ucyBmb3Ig
dGVsOiBhbmQgbWFpbHRvOiBsaW5rcy4KKwogMjAxNS0wNC0xNyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGllbnRzIHNvbWV0aW1lcyBibG9jayBm
b3IgNTAwbXMgaW4gd2FpdEZvclBvc3NpYmxlR2VvbWV0cnlVcGRhdGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0KaW5kZXggODY4MWIyOTFkY2IzZjEwZDJhNTE1MTI3ZGMwZmFhN2ZkZWMzNmNiMy4uYmY5NDIz
MzgwYTAwZTUxYTM4YmVmOGRjNGViZjFmNGY0ZDAyZjk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpA
QCAtMjE0LDI1ICsyMTQsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB7CiAgICAgTlNV
UkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIE5TU3RyaW5n
ICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgIGlmICh1cmwg
JiYgV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykgJiYg
X2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKSB7Ci0gICAgICAgIF90eXBlID0gV2ViSW1tZWRp
YXRlQWN0aW9uTGlua1ByZXZpZXc7CisgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxF
bGVtZW50KCkpIHsKKyAgICAgICAgaWYgKHByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJt
YWlsdG8iKSkgeworICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9M
aW5rOworICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0
YURldGVjdGVkTGlua107CisgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtS
YW5nZSA9IHJhbmdlT2ZDb250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKLSAg
ICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGlj
YXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpGYWRlSW4pOwotICAgICAgICBbX3dlYlZpZXcgX3NldFRleHRJbmRpY2F0
b3I6bGlua1RleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgICAgIGlmIChwcm90
b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAidGVsIikpIHsKKyAgICAgICAgICAgIF90eXBlID0g
V2ViSW1tZWRpYXRlQWN0aW9uVGVsTGluazsKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiBfYW5p
bWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVVUkxTdHJpbmcp
KSB7CisgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3Owog
Ci0gICAgICAgIFJldGFpblB0cjxRTFByZXZpZXdNZW51SXRlbT4gcWxQcmV2aWV3TGlua0l0ZW0g
PSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKLSAgICAgICAgW3FsUHJl
dmlld0xpbmtJdGVtIHNldFByZXZpZXdTdHlsZTpRTFByZXZpZXdTdHlsZVBvcG92ZXJdOwotICAg
ICAgICBbcWxQcmV2aWV3TGlua0l0ZW0gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgICAgIF9jdXJy
ZW50UUxQcmV2aWV3TWVudUl0ZW0gPSBxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKLSAgICAgICAg
cmV0dXJuIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilxbFByZXZp
ZXdMaW5rSXRlbS5nZXQoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOworICAgICAgICAg
ICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRv
cjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpGYWRlSW4pOworICAgICAgICAgICAgW193ZWJWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOmxpbmtUZXh0SW5kaWNhdG9yLmdldCgpIGZhZGVPdXQ6Tk9dOworCisgICAgICAgICAgICBS
ZXRhaW5QdHI8UUxQcmV2aWV3TWVudUl0ZW0+IHFsUHJldmlld0xpbmtJdGVtID0gW05TTWVudUl0
ZW0gc3RhbmRhcmRRdWlja0xvb2tNZW51SXRlbV07CisgICAgICAgICAgICBbcWxQcmV2aWV3TGlu
a0l0ZW0gc2V0UHJldmlld1N0eWxlOlFMUHJldmlld1N0eWxlUG9wb3Zlcl07CisgICAgICAgICAg
ICBbcWxQcmV2aWV3TGlua0l0ZW0gc2V0RGVsZWdhdGU6c2VsZl07CisgICAgICAgICAgICBfY3Vy
cmVudFFMUHJldmlld01lbnVJdGVtID0gcWxQcmV2aWV3TGlua0l0ZW0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KXFs
UHJldmlld0xpbmtJdGVtLmdldCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgTm9kZSogbm9k
ZSA9IF9oaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICgobm9kZSAmJiBub2RlLT5p
c1RleHROb2RlKCkpIHx8IF9oaXRUZXN0UmVzdWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJv
bEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoTlNNZW51SXRlbSAqaW1tZWRpYXRlQWN0aW9uSXRl
bSA9IFtzZWxmIF9tZW51SXRlbUZvckRhdGFEZXRlY3RlZFRleHRdKSB7CisgICAgICAgIGlmIChp
ZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+IGFuaW1hdGlvbkNvbnRyb2xs
ZXIgPSBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHRdKSB7CiAg
ICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbkRhdGFEZXRlY3RlZEl0ZW07Ci0g
ICAgICAgICAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
cj4paW1tZWRpYXRlQWN0aW9uSXRlbTsKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25Db250
cm9sbGVyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5p
bWF0aW9uQ29udHJvbGxlcj4gZGVmYXVsdFRleHRDb250cm9sbGVyID0gW3NlbGYgX2FuaW1hdGlv
bkNvbnRyb2xsZXJGb3JUZXh0XSkgewpAQCAtMzM3LDcgKzM0OSw3IEBAIHN0YXRpYyBJbnRSZWN0
IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2RlKiBub2Rl
KQogCiAjcHJhZ21hIG1hcmsgRGF0YSBEZXRlY3RvcnMgYWN0aW9ucwogCi0tIChOU01lbnVJdGVt
ICopX21lbnVJdGVtRm9yRGF0YURldGVjdGVkVGV4dAorLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9u
QW5pbWF0aW9uQ29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRU
ZXh0CiB7CiAgICAgUmVmUHRyPFJhbmdlPiBkZXRlY3RlZERhdGFSYW5nZTsKICAgICBGbG9hdFJl
Y3QgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CkBAIC0zODUsNiArMzk3LDM3IEBAIHN0YXRpYyBJ
bnRSZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2Rl
KiBub2RlKQogICAgIHJldHVybiBtZW51SXRlbXMubGFzdE9iamVjdDsKIH0KIAorLSAoaWQgPE5T
SW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pX2FuaW1hdGlvbkNvbnRyb2xsZXJG
b3JEYXRhRGV0ZWN0ZWRMaW5rCit7CisgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0
aW9uQ29udGV4dCA9IGFkb3B0TlMoW2FsbG9jRERBY3Rpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0
XSk7CisKKyAgICBpZiAoIWFjdGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBbYWN0aW9uQ29udGV4dCBzZXRBbHRNb2RlOllFU107CisgICAgW2FjdGlvbkNvbnRleHQgc2V0
SW1tZWRpYXRlOllFU107CisKKyAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZD
b250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKKyAgICBpZiAoIWxpbmtSYW5n
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGxp
bmtUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFu
Z2UsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOworCisgICAg
X2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlvbkNvbnRleHQgY29udGV4dEZvclZpZXc6X3dl
YlZpZXcgYWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpeKCkgeworICAgIH0g
aW50ZXJhY3Rpb25DaGFuZ2VkSGFuZGxlcjpeKCkgeworICAgICAgICBbX3dlYlZpZXcgX3NldFRl
eHRJbmRpY2F0b3I6bGlua1RleHRJbmRpY2F0b3IuZ2V0KCkgZmFkZU91dDpOT107CisgICAgfSBp
bnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7CisgICAgICAgIFtfd2ViVmlldyBfY2xlYXJU
ZXh0SW5kaWNhdG9yXTsKKyAgICB9XTsKKworICAgIFtfY3VycmVudEFjdGlvbkNvbnRleHQgc2V0
SGlnaGxpZ2h0RnJhbWU6W193ZWJWaWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOmVsZW1l
bnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShfaGl0VGVzdFJlc3VsdC5V
UkxFbGVtZW50KCkpXV07CisKKyAgICBOU0FycmF5ICptZW51SXRlbXMgPSBbW2dldEREQWN0aW9u
c01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIG1lbnVJdGVtc0ZvclRhcmdldFVSTDpfaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSBhY3Rpb25Db250ZXh0Ol9jdXJyZW50QWN0aW9u
Q29udGV4dC5nZXQoKV07CisgICAgaWYgKG1lbnVJdGVtcy5jb3VudCAhPSAxKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBtZW51SXRlbXMubGFzdE9iamVjdDsKK30KKwog
I3ByYWdtYSBtYXJrIFRleHQgYWN0aW9uCiAKIHN0YXRpYyBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRp
Y3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSogZnJhbWUsIFJhbmdlJiByYW5nZSwgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBw
cmVzZW50YXRpb25UcmFuc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDY2N2E3ODkxZmVhZTQzMDRjOTk1ZDFkYzk2ZTU0
OWYzYjQ4N2FjM2QuLmI2MWM3NzNiNzkzMGM5MmJjYTUxZTJiZGE5YWFlNWZkY2JhNzQxYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgK
QEAgLTE0OSw3ICsxNDksOSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdlYkltbWVkaWF0ZUFjdGlv
bk5vbmUgPSAwLAogICAgIFdlYkltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3LAogICAgIFdlYklt
bWVkaWF0ZUFjdGlvbkRhdGFEZXRlY3RlZEl0ZW0sCi0gICAgV2ViSW1tZWRpYXRlQWN0aW9uVGV4
dAorICAgIFdlYkltbWVkaWF0ZUFjdGlvblRleHQsCisgICAgV2ViSW1tZWRpYXRlQWN0aW9uTWFp
bHRvTGluaywKKyAgICBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rCiB9IFdlYkltbWVkaWF0ZUFj
dGlvblR5cGU7CiAKIC8vIE1lc3NhZ2UgU291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oCmluZGV4IGQzODAwNzc3YWVm
MDliYjJlZTQwOWQxMWEwMTQ0ZTk2MjQ5YzdlYjcuLjM0ZmIzNjgxM2VkODI1MDI5MTRhZDcyNzhi
OGQ0N2IxMzkyY2FlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0ltbWVkaWF0ZUFjdGlvblR5cGVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVtIHsKICAgICBr
V0tJbW1lZGlhdGVBY3Rpb25MaW5rUHJldmlldywKICAgICBrV0tJbW1lZGlhdGVBY3Rpb25EYXRh
RGV0ZWN0ZWRJdGVtLAogICAgIGtXS0ltbWVkaWF0ZUFjdGlvbkxvb2t1cFRleHQsCisgICAga1dL
SW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluaywKKyAgICBrV0tJbW1lZGlhdGVBY3Rpb25UZWxMaW5r
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCmluZGV4IGM0YzhiZWEzYWYwYzNlZGM4OTI0N2NhYzEwZmI0Y2RiYzdkNjZm
ODYuLmNmOTQzNzkzZGVkZGFjMjY3YWI3NzZkOTJhYzJhNGVlMDM2NDgyNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCkBAIC0yNzQsMjMgKzI3NCwzNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgU3RyaW5nIGFic29sdXRlTGlua1VSTCA9IGhp
dFRlc3RSZXN1bHQtPmFic29sdXRlTGlua1VSTCgpOwotICAgIGlmICghYWJzb2x1dGVMaW5rVVJM
LmlzRW1wdHkoKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlu
a1VSTCkpIHsKLSAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25MaW5rUHJldmlldzsK
KyAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHByb3Rv
Y29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgICAgIF90eXBlID0g
a1dLSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiBf
YW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAidGVsIikpIHsKKyAgICAgICAg
ICAgIF90eXBlID0ga1dLSW1tZWRpYXRlQWN0aW9uVGVsTGluazsKKyAgICAgICAgICAgIHJldHVy
biBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1
dGVMaW5rVVJMKSkgeworICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25MaW5r
UHJldmlldzsKIAotICAgICAgICBpZiAoVGV4dEluZGljYXRvciAqdGV4dEluZGljYXRvciA9IF9o
aXRUZXN0UmVzdWx0RGF0YS5saW5rVGV4dEluZGljYXRvci5nZXQoKSkKLSAgICAgICAgICAgIF9w
YWdlLT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3ItPmRhdGEoKSwgZmFsc2UpOworICAg
ICAgICAgICAgUmV0YWluUHRyPFFMUHJldmlld01lbnVJdGVtPiBxbFByZXZpZXdMaW5rSXRlbSA9
IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOworICAgICAgICAgICAgW3Fs
UHJldmlld0xpbmtJdGVtIHNldFByZXZpZXdTdHlsZTpRTFByZXZpZXdTdHlsZVBvcG92ZXJdOwor
ICAgICAgICAgICAgW3FsUHJldmlld0xpbmtJdGVtIHNldERlbGVnYXRlOnNlbGZdOworICAgICAg
ICAgICAgX2N1cnJlbnRRTFByZXZpZXdNZW51SXRlbSA9IHFsUHJldmlld0xpbmtJdGVtLmdldCgp
OwogCi0gICAgICAgIFJldGFpblB0cjxRTFByZXZpZXdNZW51SXRlbT4gcWxQcmV2aWV3TGlua0l0
ZW0gPSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKLSAgICAgICAgW3Fs
UHJldmlld0xpbmtJdGVtIHNldFByZXZpZXdTdHlsZTpRTFByZXZpZXdTdHlsZVBvcG92ZXJdOwot
ICAgICAgICBbcWxQcmV2aWV3TGlua0l0ZW0gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgICAgIF9j
dXJyZW50UUxQcmV2aWV3TWVudUl0ZW0gPSBxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKLSAgICAg
ICAgcmV0dXJuIChpZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KXFsUHJl
dmlld0xpbmtJdGVtLmdldCgpOworICAgICAgICAgICAgaWYgKFRleHRJbmRpY2F0b3IgKnRleHRJ
bmRpY2F0b3IgPSBfaGl0VGVzdFJlc3VsdERhdGEubGlua1RleHRJbmRpY2F0b3IuZ2V0KCkpCisg
ICAgICAgICAgICAgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvci0+ZGF0
YSgpLCBmYWxzZSk7CisKKyAgICAgICAgICAgIHJldHVybiAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25B
bmltYXRpb25Db250cm9sbGVyPilxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChoaXRUZXN0UmVzdWx0LT5pc1RleHROb2RlKCkgfHwgaGl0VGVzdFJl
c3VsdC0+aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpKSB7Ci0gICAgICAgIGlm
IChOU01lbnVJdGVtICppbW1lZGlhdGVBY3Rpb25JdGVtID0gW3NlbGYgX21lbnVJdGVtRm9yRGF0
YURldGVjdGVkVGV4dF0pIHsKKyAgICAgICAgaWYgKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0
aW9uQ29udHJvbGxlcj4gaW1tZWRpYXRlQWN0aW9uSXRlbSA9IFtzZWxmIF9hbmltYXRpb25Db250
cm9sbGVyRm9yRGF0YURldGVjdGVkVGV4dF0pIHsKICAgICAgICAgICAgIF90eXBlID0ga1dLSW1t
ZWRpYXRlQWN0aW9uRGF0YURldGVjdGVkSXRlbTsKLSAgICAgICAgICAgIHJldHVybiAoaWQ8TlNJ
bW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilpbW1lZGlhdGVBY3Rpb25JdGVtOwor
ICAgICAgICAgICAgcmV0dXJuIGltbWVkaWF0ZUFjdGlvbkl0ZW07CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPiB0ZXh0QW5p
bWF0aW9uQ29udHJvbGxlciA9IFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yVGV4dF0pIHsK
QEAgLTM3NCw3ICszODcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAjcHJhZ21hIG1h
cmsgRGF0YSBEZXRlY3RvcnMgYWN0aW9ucwogCi0tIChOU01lbnVJdGVtICopX21lbnVJdGVtRm9y
RGF0YURldGVjdGVkVGV4dAorLSAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9s
bGVyPilfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZFRleHQKIHsKICAgICBEREFj
dGlvbkNvbnRleHQgKmFjdGlvbkNvbnRleHQgPSBfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWRE
YXRhQWN0aW9uQ29udGV4dC5nZXQoKTsKICAgICBpZiAoIWFjdGlvbkNvbnRleHQpCkBAIC00MDcs
NyArNDIwLDM3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKG1lbnVJdGVtcy5j
b3VudCAhPSAxKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIG1lbnVJdGVtcy5s
YXN0T2JqZWN0OworICAgIHJldHVybiAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbGVyPiltZW51SXRlbXMubGFzdE9iamVjdDsKK30KKworLSAoaWQ8TlNJbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyPilfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3Rl
ZExpbmsKK3sKKyAgICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0ID0g
YWRvcHROUyhbYWxsb2NEREFjdGlvbkNvbnRleHRJbnN0YW5jZSgpIGluaXRdKTsKKworICAgIGlm
ICghYWN0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFthY3Rpb25Db250
ZXh0IHNldEFsdE1vZGU6WUVTXTsKKyAgICBbYWN0aW9uQ29udGV4dCBzZXRJbW1lZGlhdGU6WUVT
XTsKKworICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBfcGFnZTsKKyAgICBfY3VycmVu
dEFjdGlvbkNvbnRleHQgPSBbYWN0aW9uQ29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2tWaWV3IGFs
dE1vZGU6WUVTIGludGVyYWN0aW9uU3RhcnRlZEhhbmRsZXI6XigpIHsKKyAgICB9IGludGVyYWN0
aW9uQ2hhbmdlZEhhbmRsZXI6XigpIHsKKyAgICAgICAgaWYgKF9oaXRUZXN0UmVzdWx0RGF0YS5s
aW5rVGV4dEluZGljYXRvcikKKyAgICAgICAgICAgIHBhZ2UtPnNldFRleHRJbmRpY2F0b3IoX2hp
dFRlc3RSZXN1bHREYXRhLmxpbmtUZXh0SW5kaWNhdG9yLT5kYXRhKCksIGZhbHNlKTsKKyAgICB9
IGludGVyYWN0aW9uU3RvcHBlZEhhbmRsZXI6XigpIHsKKyAgICAgICAgW3NlbGYgX2NsZWFySW1t
ZWRpYXRlQWN0aW9uU3RhdGVdOworICAgIH1dOworCisgICAgW19jdXJyZW50QWN0aW9uQ29udGV4
dCBzZXRIaWdobGlnaHRGcmFtZTpbX3drVmlldy53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpb
X3drVmlldyBjb252ZXJ0UmVjdDpfaGl0VGVzdFJlc3VsdERhdGEuZWxlbWVudEJvdW5kaW5nQm94
IHRvVmlldzpuaWxdXV07CisKKyAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJl
c3VsdCA9IFtzZWxmIF93ZWJIaXRUZXN0UmVzdWx0XTsKKyAgICBOU0FycmF5ICptZW51SXRlbXMg
PSBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIG1lbnVJdGVtc0Zv
clRhcmdldFVSTDpoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKSBhY3Rpb25Db250ZXh0
Ol9jdXJyZW50QWN0aW9uQ29udGV4dC5nZXQoKV07CisKKyAgICBpZiAobWVudUl0ZW1zLmNvdW50
ICE9IDEpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRl
QWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pbWVudUl0ZW1zLmxhc3RPYmplY3Q7CiB9CiAKICNw
cmFnbWEgbWFyayBUZXh0IGFjdGlvbgo=
</data>
<flag name="review"
          id="275885"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>