<?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>95907</bug_id>
          
          <creation_ts>2012-09-05 16:29:36 -0700</creation_ts>
          <short_desc>Make computePositionedLogicalWidth and computePositionedLogicalWidthReplaced const</short_desc>
          <delta_ts>2012-09-06 19:42:57 -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>
          
          <blocked>94982</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>712653</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-05 16:29:36 -0700</bug_when>
    <thetext>Make computePositionedLogicalWidth and computePositionedLogicalWidthReplaced const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712661</commentid>
    <comment_count>1</comment_count>
      <attachid>162367</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-05 16:34:33 -0700</bug_when>
    <thetext>Created attachment 162367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712667</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-05 16:39:29 -0700</bug_when>
    <thetext>This parallels the changes to computePositionedLogicalHeight/computePositionedLogicalHeightReplaced in http://trac.webkit.org/changeset/126802 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712746</commentid>
    <comment_count>3</comment_count>
      <attachid>162367</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-05 18:32:23 -0700</bug_when>
    <thetext>Comment on attachment 162367
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:2676
&gt; +                                           stretchValues);
&gt; +        computedValues.m_extent = stretchValues.m_extent;
&gt; +        computedValues.m_position = stretchValues.m_position;
&gt; +        computedValues.m_margins.m_start = stretchValues.m_margins.m_start;
&gt; +        computedValues.m_margins.m_end = stretchValues.m_margins.m_end;

Why can&apos;t you just pass computedValues in instead of stretchValues?

&gt; Source/WebCore/rendering/RenderBox.cpp:3184
&gt; +    LayoutUnit&amp; marginLogicalLeftAlias = style()-&gt;isLeftToRightDirection() ? computedValues.m_margins.m_start : computedValues.m_margins.m_end;
&gt; +    LayoutUnit&amp; marginLogicalRightAlias = style()-&gt;isLeftToRightDirection() ? computedValues.m_margins.m_end : computedValues.m_margins.m_start;

Here and elsewhere, these don&apos;t look equivalent to me. 

FractionalLayoutUnit&amp; FractionalLayoutBoxExtent::mutableLogicalLeft(WritingMode writingMode)
{
    return isHorizontalWritingMode(writingMode) ? m_left : m_top;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713522</commentid>
    <comment_count>4</comment_count>
      <attachid>162546</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-06 11:46:33 -0700</bug_when>
    <thetext>Created attachment 162546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713524</commentid>
    <comment_count>5</comment_count>
      <attachid>162546</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-06 11:48:04 -0700</bug_when>
    <thetext>Comment on attachment 162546
Patch

Removed stretchValues.

The new code is the same because we want to ignore ltr/rtl, but start/end take that into consideration.  In other words, it&apos;s undoing the flipping caused by ltr/rtl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714029</commentid>
    <comment_count>6</comment_count>
      <attachid>162546</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 19:42:54 -0700</bug_when>
    <thetext>Comment on attachment 162546
Patch

Clearing flags on attachment: 162546

Committed r127812: &lt;http://trac.webkit.org/changeset/127812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714030</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 19:42:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162367</attachid>
            <date>2012-09-05 16:34:33 -0700</date>
            <delta_ts>2012-09-06 11:46:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95907-20120905163414.patch</filename>
            <type>text/plain</type>
            <size>25419</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU2MTI2YjI1MTBhZDBk
NGRiMmQyZTAzNDQyMjFjZjBhNmIxMGQ3NS4uNmFlYmRiMjgwNGQ5MzdiZDI5NzQxYmExYTQ1NDlk
YTc0MDA4MGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTA1ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aCBhbmQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNl
ZCBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGlzIHJlZmFjdG9yaW5nIHRvIG1ha2UgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRo
IGNvbnN0LiBNYWtlIHNvbWUgbWV0aG9kcyB0aGF0CisgICAgICAgIGdldCBjYWxsZWQgYnkgY29t
cHV0ZUxvZ2ljYWxXaWR0aCBjb25zdC4gV2UgcGF0aCBpbiBhIHN0cnVjdCB0aGF0IHdlIHBvcHVs
YXRlIHdpdGggdmFsdWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6IE1ha2UgYSBMb2dpY2FsRXh0ZW50Q29t
cHV0ZWRWYWx1ZXMgdG8KKyAgICAgICAgaG9sZCByZXN1bHRzLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aCk6IE1ha2UgY29uc3QuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
VXNpbmcpOiBDaGFuZ2Ugb3V0cHV0IHRvIHVzZSBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMK
KyAgICAgICAgaW5zdGVhZCBvZiA0IHNlcGFyYXRlIHBhcmFtcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCk6IE1ha2Ug
Y29uc3QuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVuZGVy
Qm94KTogQWRkIGNvbnN0IGFuZCBjaGFuZ2Ugb3V0IHBhcmFtcyB0byBMb2dpY2FsRXh0ZW50Q29t
cHV0ZWRWYWx1ZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKTogTWFrZSBhIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyB0bworICAgICAgICBob2xkIHJlc3VsdHMuCisKIDIw
MTItMDktMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFB1dCB3ZWJjb3JlX3BsYXRmb3JtX2ZpbGVzIGluIHNlcGFyYXRlIGd5cCB0
YXJnZXQgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGV4Y2x1c2lvbiBwYXR0ZXJucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA3YWNmNmIzMDMyZTZlYmUyY2RlMmQzZjQx
MDkxMmJlYTMyZmM0NWVjLi45ZDEzZWFkZTAwNzYzZWEyZmJkNDIwMjAwNjRmMmIwMTViZDgxZTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTYyOCw3ICsxNjI4
LDEyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVy
UmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGN1bGF0aW9uIGlzIG5vdCBwYXRj
aGVkIGZvciBibG9jay1mbG93IHlldC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2NTAwCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bFdpZHRoKHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CisgICAgICAg
IExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsKKyAgICAgICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoY29tcHV0ZWRWYWx1ZXMsIHJlZ2lvbiwgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CisgICAgICAgIHNldExvZ2ljYWxXaWR0aChjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCk7CisgICAgICAgIHNldExvZ2ljYWxMZWZ0KGNvbXB1dGVkVmFs
dWVzLm1fcG9zaXRpb24pOworICAgICAgICBzZXRNYXJnaW5TdGFydChjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9zdGFydCk7CisgICAgICAgIHNldE1hcmdpbkVuZChjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9lbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTQzLDcgKzI1
NDgsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBs
b2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBM
YXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCit2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJiBjb21wdXRlZFZhbHVlcywgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3QKIHsKICAgICBpZiAoaXNSZXBsYWNl
ZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3IgcmVnaW9ucyB3aXRoIHdpZHRoIGF1dG8sIHdl
IHdhbnQgdG8gY29tcHV0ZSB3aWR0aCB1c2luZyB0aGUgbm9ybWFsIGJsb2NrIHNpemluZyBjb2Rl
LgpAQCAtMjU1MSw3ICsyNTU2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG8KICAgICAgICAg
Ly8gd2lsbCBpbmhlcml0IGZyb20gUmVuZGVyQmxvY2sgaW5zdGVhZCBvZiBSZW5kZXJSZXBsYWNl
ZC4KICAgICAgICAgLy8gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQxMzIgKQogICAgICAgICBpZiAoIWlzUmVuZGVyUmVnaW9uKCkgfHwgKGlzUmVuZGVyUmVn
aW9uKCkgJiYgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkpKSB7Ci0gICAgICAgICAgICBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKCk7IC8vIEZJWE1FOiBQYXRjaCBm
b3IgcmVnaW9ucyB3aGVuIHdlIGFkZCByZXBsYWNlZCBlbGVtZW50IHN1cHBvcnQuCisgICAgICAg
ICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKGNvbXB1dGVkVmFsdWVz
KTsgLy8gRklYTUU6IFBhdGNoIGZvciByZWdpb25zIHdoZW4gd2UgYWRkIHJlcGxhY2VkIGVsZW1l
bnQgc3VwcG9ydC4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI1
ODcsOCArMjU5Miw2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxX
aWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgY29uc3QgTGF5b3V0
VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7
CiAgICAgY29uc3QgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxMZWZ0ID0gaXNIb3Jpem9udGFsID8gc3R5
bGUoKS0+bWFyZ2luTGVmdCgpIDogc3R5bGUoKS0+bWFyZ2luVG9wKCk7CiAgICAgY29uc3QgTGVu
Z3RoIG1hcmdpbkxvZ2ljYWxSaWdodCA9IGlzSG9yaXpvbnRhbCA/IHN0eWxlKCktPm1hcmdpblJp
Z2h0KCkgOiBzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKTsKLSAgICBMYXlvdXRVbml0JiBtYXJnaW5M
b2dpY2FsTGVmdEFsaWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUxvZ2ljYWxMZWZ0KHN0eWxlKCkt
PndyaXRpbmdNb2RlKCkpOwotICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFz
ID0gbV9tYXJnaW5Cb3gubXV0YWJsZUxvZ2ljYWxSaWdodChzdHlsZSgpLT53cml0aW5nTW9kZSgp
KTsKIAogICAgIExlbmd0aCBsb2dpY2FsTGVmdExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxMZWZ0
KCk7CiAgICAgTGVuZ3RoIGxvZ2ljYWxSaWdodExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxSaWdo
dCgpOwpAQCAtMjYyMiw3MCArMjYyNSw2MiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAg
IGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNhbFJp
Z2h0TGVuZ3RoLCB0aGlzLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbFdpZHRoLCBy
ZWdpb24pOwogICAgIAogICAgIC8vIENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZhbHVl
cyBmb3IgJ3dpZHRoJyBjYXNlLgotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0Owot
ICAgIExheW91dFVuaXQgbG9naWNhbExlZnRSZXN1bHQ7CiAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGhVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lk
dGgoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1Bs
dXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdp
bkxvZ2ljYWxSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJp
Z2h0QWxpYXMsIGxvZ2ljYWxMZWZ0UmVzdWx0KTsKLSAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNh
bFdpZHRoUmVzdWx0KTsKLSAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdFJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlcyk7CiAK
ICAgICAvLyBDYWxjdWxhdGUgY29uc3RyYWludCBlcXVhdGlvbiB2YWx1ZXMgZm9yICdtYXgtd2lk
dGgnIGNhc2UuCiAgICAgaWYgKCFzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFdpZHRoOwotICAgICAgICBMYXlv
dXRVbml0IG1heE1hcmdpbkxvZ2ljYWxMZWZ0OwotICAgICAgICBMYXlvdXRVbml0IG1heE1hcmdp
bkxvZ2ljYWxSaWdodDsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsTGVmdFBvczsKKyAg
ICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIG1heFZhbHVlczsKIAogICAgICAgICBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heFNpemUsIHN0eWxlKCktPmxvZ2lj
YWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxv
Z2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoLCBtYXhNYXJnaW5Mb2dpY2FsTGVmdCwg
bWF4TWFyZ2luTG9naWNhbFJpZ2h0LCBtYXhMb2dpY2FsTGVmdFBvcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWVzKTsKIAotICAgICAgICBpZiAo
bG9naWNhbFdpZHRoKCkgPiBtYXhMb2dpY2FsV2lkdGgpIHsKLSAgICAgICAgICAgIHNldExvZ2lj
YWxXaWR0aChtYXhMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRB
bGlhcyA9IG1heE1hcmdpbkxvZ2ljYWxMZWZ0OwotICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJp
Z2h0QWxpYXMgPSBtYXhNYXJnaW5Mb2dpY2FsUmlnaHQ7Ci0gICAgICAgICAgICBzZXRMb2dpY2Fs
TGVmdChtYXhMb2dpY2FsTGVmdFBvcyk7CisgICAgICAgIGlmIChjb21wdXRlZFZhbHVlcy5tX2V4
dGVudCA+IG1heFZhbHVlcy5tX2V4dGVudCkgeworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQgPSBtYXhWYWx1ZXMubV9leHRlbnQ7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVl
cy5tX3Bvc2l0aW9uID0gbWF4VmFsdWVzLm1fcG9zaXRpb247CisgICAgICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1heFZhbHVlcy5tX21hcmdpbnMubV9zdGFydDsK
KyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1heFZhbHVlcy5t
X21hcmdpbnMubV9lbmQ7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgY29u
c3RyYWludCBlcXVhdGlvbiB2YWx1ZXMgZm9yICdtaW4td2lkdGgnIGNhc2UuCiAgICAgaWYgKCFz
dHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKS5pc1plcm8oKSkgewotICAgICAgICBMYXlvdXRVbml0
IG1pbkxvZ2ljYWxXaWR0aDsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2FsTGVm
dDsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQ7Ci0gICAgICAgIExh
eW91dFVuaXQgbWluTG9naWNhbExlZnRQb3M7CisgICAgICAgIExvZ2ljYWxFeHRlbnRDb21wdXRl
ZFZhbHVlcyBtaW5WYWx1ZXM7CiAKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGhVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKSwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0
aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCwgbWluTWFyZ2luTG9naWNhbExlZnQsIG1pbk1hcmdpbkxvZ2ljYWxSaWdodCwgbWlu
TG9naWNhbExlZnRQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pblZhbHVlcyk7CiAKLSAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpIDwgbWluTG9naWNh
bFdpZHRoKSB7Ci0gICAgICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluTG9naWNhbFdpZHRoKTsK
LSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBtaW5NYXJnaW5Mb2dpY2FsTGVm
dDsKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gbWluTWFyZ2luTG9naWNh
bFJpZ2h0OwotICAgICAgICAgICAgc2V0TG9naWNhbExlZnQobWluTG9naWNhbExlZnRQb3MpOwor
ICAgICAgICBpZiAoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPCBtaW5WYWx1ZXMubV9leHRlbnQp
IHsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluVmFsdWVzLm1fZXh0
ZW50OworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IG1pblZhbHVlcy5t
X3Bvc2l0aW9uOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQg
PSBtaW5WYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQ7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVl
cy5tX21hcmdpbnMubV9lbmQgPSBtaW5WYWx1ZXMubV9tYXJnaW5zLm1fZW5kOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRoKCkg
JiYgbG9naWNhbFdpZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQ
bHVzUGFkZGluZykgeworICAgIGlmIChzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpICYmIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IDwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCkgLSBib3JkZXJzUGx1c1BhZGRpbmcpIHsKKyAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzIHN0cmV0Y2hWYWx1ZXM7CiAgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgTGVuZ3RoKG1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nLCBGaXhlZCksIGNvbnRhaW5lckJsb2NrLCBjb250
YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5ndGgsIGxvZ2lj
YWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxSaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1
bHQsIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMsIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzLCBsb2dp
Y2FsTGVmdFJlc3VsdCk7Ci0gICAgICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGhSZXN1
bHQpOwotICAgICAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdFJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXRjaFZhbHVlcyk7CisgICAg
ICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gc3RyZXRjaFZhbHVlcy5tX2V4dGVudDsKKyAg
ICAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IHN0cmV0Y2hWYWx1ZXMubV9wb3NpdGlv
bjsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgPSBzdHJldGNoVmFs
dWVzLm1fbWFyZ2lucy5tX3N0YXJ0OworICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMu
bV9lbmQgPSBzdHJldGNoVmFsdWVzLm1fbWFyZ2lucy5tX2VuZDsKICAgICB9CiAKLSAgICAvLyBQ
dXQgbG9naWNhbFdpZHRoKCkgaW50byBjb3JyZWN0IGZvcm0uCi0gICAgc2V0TG9naWNhbFdpZHRo
KGxvZ2ljYWxXaWR0aCgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudCArPSBib3JkZXJzUGx1c1BhZGRpbmc7CiAgICAgCiAgICAgLy8gQWRqdXN0IGxv
Z2ljYWxMZWZ0IGlmIHdlIG5lZWQgdG8gZm9yIHRoZSBmbGlwcGVkIHZlcnNpb24gb2Ygb3VyIHdy
aXRpbmcgbW9kZSBpbiByZWdpb25zLgogICAgIGlmIChpblJlbmRlckZsb3dUaHJlYWQoKSAmJiAh
cmVnaW9uICYmIGlzV3JpdGluZ01vZGVSb290KCkgJiYgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA9PSBjb250YWluZXJCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0UG9zID0gbG9naWNhbExlZnQoKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdFBvcyA9IGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb247CiAgICAg
ICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjYiA9IHRvUmVuZGVyQmxvY2soY29udGFpbmVyQmxvY2sp
OwogICAgICAgICBMYXlvdXRVbml0IGNiUGFnZU9mZnNldCA9IG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCk7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogY2JSZWdp
b24gPSBjYi0+cmVnaW9uQXRCbG9ja09mZnNldChjYlBhZ2VPZmZzZXQpOwpAQCAtMjY5NCw3ICsy
Njg5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG8KICAgICAgICAgICAgIFJlbmRlckJveFJl
Z2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94UmVnaW9uSW5mbyhjYlJlZ2lvbiwgY2JQ
YWdlT2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChib3hJbmZvKSB7CiAgICAgICAgICAgICAgICAg
bG9naWNhbExlZnRQb3MgKz0gYm94SW5mby0+bG9naWNhbExlZnQoKTsKLSAgICAgICAgICAgICAg
ICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdFBvcyk7CisgICAgICAgICAgICAgICAgY29tcHV0
ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxMZWZ0UG9zOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMjcxNCw3ICsyNzA5LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxv
Z2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsTGVmdFBvcywgY29u
c3QKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNp
emVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJl
Y3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1
c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMZW5ndGggbG9naWNhbExlZnQsIExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJn
aW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxSaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxX
aWR0aFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0
JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAogewogICAgIGlmICh3
aWR0aFNpemVUeXBlID09IE1pblNpemUgJiYgbG9naWNhbFdpZHRoLmlzQXV0bygpKQogICAgICAg
ICBsb2dpY2FsV2lkdGggPSBMZW5ndGgoMCwgRml4ZWQpOwpAQCAtMjcyOSw2ICsyNzI0LDggQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5
cGUgd2lkdGhTaXplVHlwZSwgTGVuZ3QKICAgICBib29sIGxvZ2ljYWxMZWZ0SXNBdXRvID0gbG9n
aWNhbExlZnQuaXNBdXRvKCk7CiAgICAgYm9vbCBsb2dpY2FsUmlnaHRJc0F1dG8gPSBsb2dpY2Fs
UmlnaHQuaXNBdXRvKCk7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKKyAg
ICBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gc3R5bGUoKS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgOiBjb21w
dXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7CisgICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNh
bFJpZ2h0VmFsdWUgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb21wdXRl
ZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgOiBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFy
dDsKIAogICAgIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2ljYWxXaWR0aElzQXV0byAm
JiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXApAQCAt
Mjc0Nyw5ICsyNzQ0LDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwgTGVuZ3QKICAgICAgICAgLy8gY2Fz
ZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRp
b25zLgogCiAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
TGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aCh2YWx1ZUZvckxlbmd0
aChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOworICAg
ICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdp
ZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBy
ZW5kZXJWaWV3KSk7CiAKLSAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFdpZHRo
VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgcmVuZGVyVmlldykgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICBjb25zdCBMYXlv
dXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSArIGJvcmRlcnNQbHVz
UGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24K
ICAgICAgICAgaWYgKG1hcmdpbkxvZ2ljYWxMZWZ0LmlzQXV0bygpICYmIG1hcmdpbkxvZ2ljYWxS
aWdodC5pc0F1dG8oKSkgewpAQCAtMjg0NCw4ICsyODQxLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwg
TGVuZ3QKICAgICAgICAgICAgIExheW91dFVuaXQgcHJlZmVycmVkV2lkdGggPSBtYXhQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKICAgICAgICAgICAgIExheW91
dFVuaXQgcHJlZmVycmVkTWluV2lkdGggPSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJv
cmRlcnNQbHVzUGFkZGluZzsKICAgICAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgg
PSBhdmFpbGFibGVTcGFjZSAtIGxvZ2ljYWxSaWdodFZhbHVlOwotICAgICAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSBtaW4obWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFibGVXaWR0aCks
IHByZWZlcnJlZFdpZHRoKTsKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFi
bGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKKyAgICAg
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluKG1heChwcmVmZXJyZWRNaW5XaWR0
aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7CisgICAgICAgICAgICBsb2dpY2Fs
TGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBs
b2dpY2FsUmlnaHRWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRv
ICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAg
ICAgIC8vIFJVTEUgMzogKHVzZSBzaHJpbmstdG8tZml0IGZvciB3aWR0aCwgYW5kIG5vIG5lZWQg
c29sdmUgb2YgcmlnaHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CkBA
IC0yODU0LDE5ICsyODUxLDE5IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgICAgICAg
ICBMYXlvdXRVbml0IHByZWZlcnJlZFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkg
LSBib3JkZXJzUGx1c1BhZGRpbmc7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZE1p
bldpZHRoID0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7
CiAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoID0gYXZhaWxhYmxlU3BhY2Ug
LSBsb2dpY2FsTGVmdFZhbHVlOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBtaW4o
bWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFibGVXaWR0aCksIHByZWZlcnJlZFdpZHRoKTsK
KyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluKG1heChwcmVmZXJyZWRN
aW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNh
bFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBmb3IgbGVmdCkK
LSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2Fs
V2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgs
IHJlbmRlclZpZXcpKTsKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVT
cGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7
CisgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAoY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2Fs
TGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykg
ewogICAgICAgICAgICAgLy8gUlVMRSA1OiAoc29sdmUgZm9yIHdpZHRoKQogICAgICAgICAgICAg
bG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUg
PSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAg
ICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExl
ZnRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdp
ZHRoLCByZW5kZXJWaWV3KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRv
ICYmICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAg
ICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIGZvciByaWdodCkKICAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0g
Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRo
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWVzLm1fZXh0ZW50ID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgodmFsdWVG
b3JMZW5ndGgobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjg4MSwxMyArMjg3OCwxMyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNp
emVUeXBlLCBMZW5ndAogICAgICAgICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmUgPSBmbG93LT5m
aXJzdExpbmVCb3goKTsKICAgICAgICAgSW5saW5lRmxvd0JveCogbGFzdExpbmUgPSBmbG93LT5s
YXN0TGluZUJveCgpOwogICAgICAgICBpZiAoZmlyc3RMaW5lICYmIGxhc3RMaW5lICYmIGZpcnN0
TGluZSAhPSBsYXN0TGluZSkgewotICAgICAgICAgICAgbG9naWNhbExlZnRQb3MgPSBsb2dpY2Fs
TGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIGxhc3RMaW5lLT5ib3JkZXJMb2dp
Y2FsTGVmdCgpICsgKGxhc3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5lLT5sb2dpY2Fs
TGVmdCgpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2Fs
TGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIGxhc3RMaW5lLT5ib3JkZXJMb2dp
Y2FsTGVmdCgpICsgKGxhc3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5lLT5sb2dpY2Fs
TGVmdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxv
Z2ljYWxMZWZ0UG9zID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWU7
Ci0gICAgY29tcHV0ZUxvZ2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChsb2dpY2FsTGVmdFBvcywg
dGhpcywgbG9naWNhbFdpZHRoVmFsdWUsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsTGVmdFZhbHVl
ICsgbWFyZ2luTG9naWNhbExlZnRWYWx1ZTsKKyAgICBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlv
bmVkT2Zmc2V0KGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24sIHRoaXMsIGNvbXB1dGVkVmFsdWVz
Lm1fZXh0ZW50LCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIH0KIAog
c3RhdGljIHZvaWQgY29tcHV0ZUJsb2NrU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsVG9w
LCBMZW5ndGgmIGxvZ2ljYWxCb3R0b20sIGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaykKQEAgLTMxNTksNyArMzE1Niw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXpl
VHlwZSBoZWlnaHRTaXplVHlwZSwgTGVuCiAgICAgY29tcHV0ZUxvZ2ljYWxUb3BQb3NpdGlvbmVk
T2Zmc2V0KGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24sIHRoaXMsIGxvZ2ljYWxIZWlnaHRWYWx1
ZSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogfQogCi12b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCgpCit2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZChMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAogewogICAgIC8vIFRoZSBm
b2xsb3dpbmcgaXMgYmFzZWQgb2ZmIG9mIHRoZSBXM0MgV29ya2luZyBEcmFmdCBmcm9tIEFwcmls
IDExLCAyMDA2IG9mCiAgICAgLy8gQ1NTIDIuMTogU2VjdGlvbiAxMC4zLjggIkFic29sdXRlbHkg
cG9zaXRpb25lZCwgcmVwbGFjZWQgZWxlbWVudHMiCkBAIC0zMTgzLDggKzMxODAsOCBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCgpCiAgICAg
TGVuZ3RoIGxvZ2ljYWxSaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxSaWdodCgpOwogICAgIExlbmd0
aCBtYXJnaW5Mb2dpY2FsTGVmdCA9IGlzSG9yaXpvbnRhbCA/IHN0eWxlKCktPm1hcmdpbkxlZnQo
KSA6IHN0eWxlKCktPm1hcmdpblRvcCgpOwogICAgIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQg
PSBpc0hvcml6b250YWwgPyBzdHlsZSgpLT5tYXJnaW5SaWdodCgpIDogc3R5bGUoKS0+bWFyZ2lu
Qm90dG9tKCk7Ci0gICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1fbWFy
Z2luQm94Lm11dGFibGVMb2dpY2FsTGVmdChzdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBM
YXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVM
b2dpY2FsUmlnaHQoc3R5bGUoKS0+d3JpdGluZ01vZGUoKSk7CisgICAgTGF5b3V0VW5pdCYgbWFy
Z2luTG9naWNhbExlZnRBbGlhcyA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0IDogY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fZW5kOworICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gc3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5z
Lm1fZW5kIDogY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQ7CiAKICAgICAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKlwKICAgICAgKiAxLiBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVy
bWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZApAQCAtMzE5Myw5ICszMTkwLDkgQEAgdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoKQogICAgIC8v
IE5PVEU6IFRoaXMgdmFsdWUgb2Ygd2lkdGggaXMgRklOQUwgaW4gdGhhdCB0aGUgbWluL21heCB3
aWR0aCBjYWxjdWxhdGlvbnMKICAgICAvLyBhcmUgZGVhbHQgd2l0aCBpbiBjb21wdXRlUmVwbGFj
ZWRXaWR0aCgpLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBzdGVwcyB0byBwcm9kdWNlCiAgICAgLy8g
Y29ycmVjdCBtYXgvbWluIGluIHRoZSBub24tcmVwbGFjZWQgdmVyc2lvbiwgYXJlIG5vdCBuZWNl
c3NhcnkuCi0gICAgc2V0TG9naWNhbFdpZHRoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgp
ICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKTsKKyAgICBjb21wdXRlZFZhbHVlcy5t
X2V4dGVudCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCgpICsgYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxXaWR0aCgpOwogCi0gICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxXaWR0aCgpOworICAgIGNvbnN0IExheW91
dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSBjb21wdXRlZFZh
bHVlcy5tX2V4dGVudDsKIAogICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAgICAqIDIuIElmIGJv
dGggJ2xlZnQnIGFuZCAncmlnaHQnIGhhdmUgdGhlIHZhbHVlICdhdXRvJywgdGhlbiBpZiAnZGly
ZWN0aW9uJwpAQCAtMzI5MSw3ICszMjg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoKQogICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVy
Vmlldyk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRvLWxl
ZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFzIHBv
c3NpYmxlCiAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7Ci0gICAgICAg
ICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGgoKSArIGxvZ2ljYWxMZWZ0
VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFy
Z2luTG9naWNhbFJpZ2h0QWxpYXM7CisgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGgg
PSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmln
aHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxp
YXM7CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gY29udGFpbmVyTG9naWNhbFdpZHRo
IC0gKHRvdGFsTG9naWNhbFdpZHRoIC0gbG9naWNhbExlZnRWYWx1ZSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zMzE4LDE0ICszMzE1LDE0IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKCkKICAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RM
aW5lID0gZmxvdy0+Zmlyc3RMaW5lQm94KCk7CiAgICAgICAgIElubGluZUZsb3dCb3gqIGxhc3RM
aW5lID0gZmxvdy0+bGFzdExpbmVCb3goKTsKICAgICAgICAgaWYgKGZpcnN0TGluZSAmJiBsYXN0
TGluZSAmJiBmaXJzdExpbmUgIT0gbGFzdExpbmUpIHsKLSAgICAgICAgICAgIHNldExvZ2ljYWxM
ZWZ0KGxvZ2ljYWxMZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbGFzdExpbmUt
PmJvcmRlckxvZ2ljYWxMZWZ0KCkgKyAobGFzdExpbmUtPmxvZ2ljYWxMZWZ0KCkgLSBmaXJzdExp
bmUtPmxvZ2ljYWxMZWZ0KCkpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRp
b24gPSBsb2dpY2FsTGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIGxhc3RMaW5l
LT5ib3JkZXJMb2dpY2FsTGVmdCgpICsgKGxhc3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RM
aW5lLT5sb2dpY2FsTGVmdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRQb3MgPSBsb2dpY2FsTGVmdFZhbHVlICsg
bWFyZ2luTG9naWNhbExlZnRBbGlhczsKLSAgICBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVk
T2Zmc2V0KGxvZ2ljYWxMZWZ0UG9zLCB0aGlzLCBsb2dpY2FsV2lkdGgoKSwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgc2V0TG9naWNhbExlZnQobG9naWNhbExl
ZnRQb3Mucm91bmQoKSk7CisgICAgY29tcHV0ZUxvZ2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChs
b2dpY2FsTGVmdFBvcywgdGhpcywgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQsIGNvbnRhaW5lckJs
b2NrLCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRp
b24gPSBsb2dpY2FsTGVmdFBvcy5yb3VuZCgpOwogfQogCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCA4Yjc4YTZiZjhiM2I0ODYyYmI1ZTQ4Y2FjM2QyNzdlMzRiYWYzMzkxLi5iYTkyMDNl
NzdlYTNlMjU2ZDU2MjIzOTM5MGIxY2MwYmFmZWYyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC01NjIsNyArNTYyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFp
bnRDdXN0b21IaWdobGlnaHQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgYmVoaW5kVGV4dCk7CiAjZW5kaWYKIAotICAgIHZvaWQgY29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiA9IDAsIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA9IDApOworICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVyUmVnaW9uKiA9
IDAsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSA9IDApIGNvbnN0
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBj
b25zdCB7IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxl
KCk7IH0KIApAQCAtNTkxLDE0ICs1OTEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsV2lkdGgs
IGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4dERpcmVjdGlv
biBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGJv
cmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBMZW5ndGggbWFy
Z2luTG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZh
bHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJn
aW5Mb2dpY2FsUmlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNhbEhlaWdodCwgY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBMYXlvdXRV
bml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVu
Z3RoIG1hcmdpbkxvZ2ljYWxUb3AsIExlbmd0aCBtYXJnaW5Mb2dpY2FsQm90dG9tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzJikgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhl
aWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0OwotICAgIHZv
aWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCgpOworICAgIHZvaWQgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgbWlu
aW11bSBhbmQgbWF4aW11bSBwcmVmZXJyZWQgd2lkdGhzIGZvciBhbiBvYmplY3QuCiAgICAgLy8g
VGhlc2UgdmFsdWVzIGFyZSB1c2VkIGluIHNocmluay10by1maXQgbGF5b3V0IHN5c3RlbXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBjZDgzZTNmOGYwMzYz
NmExNGU2NDVjMTAyZGY4MDgwYWU2YjJlYWExLi40ZjI1OTQ0YTYzODIwYjMwM2FhYjk4ZmM0ZDdm
MWMxNTJmNTFkNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
QEAgLTIxNiw4ICsyMTYsMTQgQEAgdm9pZCBSZW5kZXJUYWJsZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0
aCgpCiB7CiAgICAgcmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwogCi0gICAgaWYgKGlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aCgp
OworICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CisgICAgICAgIGNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzKTsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRo
KGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICAgICAgc2V0TG9naWNhbExlZnQoY29tcHV0
ZWRWYWx1ZXMubV9wb3NpdGlvbik7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX3N0YXJ0KTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX2VuZCk7CisgICAgfQogCiAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29u
dGFpbmluZ0Jsb2NrKCk7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162546</attachid>
            <date>2012-09-06 11:46:33 -0700</date>
            <delta_ts>2012-09-06 19:42:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95907-20120906114614.patch</filename>
            <type>text/plain</type>
            <size>24586</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhNmEzYTEzYWIzYWJh
NWY3MTFhMzkwNTdkMTYwMjkwMTMwODIwZS4uZGMyYjc2NTI5ZjRlOTc0NDYwNTA1MTEwMDZjYzFi
ZTJjMzc4MTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTA1ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aCBhbmQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNl
ZCBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGlzIHJlZmFjdG9yaW5nIHRvIG1ha2UgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRo
IGNvbnN0LiBNYWtlIHNvbWUgbWV0aG9kcyB0aGF0CisgICAgICAgIGdldCBjYWxsZWQgYnkgY29t
cHV0ZUxvZ2ljYWxXaWR0aCBjb25zdC4gV2UgcGF0aCBpbiBhIHN0cnVjdCB0aGF0IHdlIHBvcHVs
YXRlIHdpdGggdmFsdWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0IGEg
cmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKTogTWFr
ZSBhIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyB0bworICAgICAgICBob2xkIHJlc3VsdHMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoKTogTWFrZSBjb25zdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6IENoYW5nZSBvdXRwdXQgdG8gdXNlIExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcworICAgICAgICBpbnN0ZWFkIG9mIDQgc2VwYXJhdGUgcGFyYW1z
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxX
aWR0aFJlcGxhY2VkKTogTWFrZSBjb25zdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOiBBZGQgY29uc3QgYW5kIGNoYW5nZSBvdXQgcGFyYW1z
IHRvIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dp
Y2FsV2lkdGgpOiBNYWtlIGEgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIHRvCisgICAgICAg
IGhvbGQgcmVzdWx0cy4KKwogMjAxMi0wOS0wNiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzhjYTdjODZkODNhMzQ5ZTgzNGIyMDFi
NjY1OTlkNzhlZmVkMTFmNC4uMTcyYzQ1ZmY0ZGRiOWE4NTAzNmRlMmJkYjhjY2Y5MjU1YjkzYmY4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE2MjUsNyArMTYy
NSwxMiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxjdWxhdGlvbiBpcyBub3QgcGF0
Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aChyZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAgICAg
ICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CisgICAgICAgIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKGNvbXB1dGVkVmFsdWVzLCByZWdpb24sIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICBzZXRMb2dpY2FsTGVmdChjb21wdXRlZFZh
bHVlcy5tX3Bvc2l0aW9uKTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQoY29tcHV0ZWRWYWx1ZXMu
bV9tYXJnaW5zLm1fc3RhcnQpOworICAgICAgICBzZXRNYXJnaW5FbmQoY29tcHV0ZWRWYWx1ZXMu
bV9tYXJnaW5zLm1fZW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjU0MCwxMCAr
MjU0NSwxMCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoTGVuZ3Ro
JiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9u
LCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCit2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzJiBjb21wdXRlZFZhbHVlcywgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3QKIHsKICAgICBpZiAoaXNSZXBs
YWNlZCgpKSB7Ci0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQo
KTsgLy8gRklYTUU6IFBhdGNoIGZvciByZWdpb25zIHdoZW4gd2UgYWRkIHJlcGxhY2VkIGVsZW1l
bnQgc3VwcG9ydC4KKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNl
ZChjb21wdXRlZFZhbHVlcyk7IC8vIEZJWE1FOiBQYXRjaCBmb3IgcmVnaW9ucyB3aGVuIHdlIGFk
ZCByZXBsYWNlZCBlbGVtZW50IHN1cHBvcnQuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTI1NzgsOCArMjU4Myw2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgY29uc3QgTGF5
b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCk7CiAgICAgY29uc3QgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxMZWZ0ID0gaXNIb3Jpem9udGFsID8g
c3R5bGUoKS0+bWFyZ2luTGVmdCgpIDogc3R5bGUoKS0+bWFyZ2luVG9wKCk7CiAgICAgY29uc3Qg
TGVuZ3RoIG1hcmdpbkxvZ2ljYWxSaWdodCA9IGlzSG9yaXpvbnRhbCA/IHN0eWxlKCktPm1hcmdp
blJpZ2h0KCkgOiBzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKTsKLSAgICBMYXlvdXRVbml0JiBtYXJn
aW5Mb2dpY2FsTGVmdEFsaWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUxvZ2ljYWxMZWZ0KHN0eWxl
KCktPndyaXRpbmdNb2RlKCkpOwotICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxSaWdodEFs
aWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUxvZ2ljYWxSaWdodChzdHlsZSgpLT53cml0aW5nTW9k
ZSgpKTsKIAogICAgIExlbmd0aCBsb2dpY2FsTGVmdExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxM
ZWZ0KCk7CiAgICAgTGVuZ3RoIGxvZ2ljYWxSaWdodExlbmd0aCA9IHN0eWxlKCktPmxvZ2ljYWxS
aWdodCgpOwpAQCAtMjYxMyw3MCArMjYxNiw1NyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwog
ICAgIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShsb2dpY2FsTGVmdExlbmd0aCwgbG9naWNh
bFJpZ2h0TGVuZ3RoLCB0aGlzLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbFdpZHRo
LCByZWdpb24pOwogICAgIAogICAgIC8vIENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZh
bHVlcyBmb3IgJ3dpZHRoJyBjYXNlLgotICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0
OwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnRSZXN1bHQ7CiAgICAgY29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2Fs
V2lkdGgoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVy
c1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1h
cmdpbkxvZ2ljYWxSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ljYWxXaWR0aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNh
bFJpZ2h0QWxpYXMsIGxvZ2ljYWxMZWZ0UmVzdWx0KTsKLSAgICBzZXRMb2dpY2FsV2lkdGgobG9n
aWNhbFdpZHRoUmVzdWx0KTsKLSAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdFJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlcyk7
CiAKICAgICAvLyBDYWxjdWxhdGUgY29uc3RyYWludCBlcXVhdGlvbiB2YWx1ZXMgZm9yICdtYXgt
d2lkdGgnIGNhc2UuCiAgICAgaWYgKCFzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFdpZHRoOwotICAgICAgICBM
YXlvdXRVbml0IG1heE1hcmdpbkxvZ2ljYWxMZWZ0OwotICAgICAgICBMYXlvdXRVbml0IG1heE1h
cmdpbkxvZ2ljYWxSaWdodDsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsTGVmdFBvczsK
KyAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIG1heFZhbHVlczsKIAogICAgICAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heFNpemUsIHN0eWxlKCktPmxv
Z2ljYWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdp
bkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoLCBtYXhNYXJnaW5Mb2dpY2FsTGVm
dCwgbWF4TWFyZ2luTG9naWNhbFJpZ2h0LCBtYXhMb2dpY2FsTGVmdFBvcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWVzKTsKIAotICAgICAgICBp
ZiAobG9naWNhbFdpZHRoKCkgPiBtYXhMb2dpY2FsV2lkdGgpIHsKLSAgICAgICAgICAgIHNldExv
Z2ljYWxXaWR0aChtYXhMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbWFyZ2luTG9naWNhbExl
ZnRBbGlhcyA9IG1heE1hcmdpbkxvZ2ljYWxMZWZ0OwotICAgICAgICAgICAgbWFyZ2luTG9naWNh
bFJpZ2h0QWxpYXMgPSBtYXhNYXJnaW5Mb2dpY2FsUmlnaHQ7Ci0gICAgICAgICAgICBzZXRMb2dp
Y2FsTGVmdChtYXhMb2dpY2FsTGVmdFBvcyk7CisgICAgICAgIGlmIChjb21wdXRlZFZhbHVlcy5t
X2V4dGVudCA+IG1heFZhbHVlcy5tX2V4dGVudCkgeworICAgICAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQgPSBtYXhWYWx1ZXMubV9leHRlbnQ7CisgICAgICAgICAgICBjb21wdXRlZFZh
bHVlcy5tX3Bvc2l0aW9uID0gbWF4VmFsdWVzLm1fcG9zaXRpb247CisgICAgICAgICAgICBjb21w
dXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1heFZhbHVlcy5tX21hcmdpbnMubV9zdGFy
dDsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1heFZhbHVl
cy5tX21hcmdpbnMubV9lbmQ7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUg
Y29uc3RyYWludCBlcXVhdGlvbiB2YWx1ZXMgZm9yICdtaW4td2lkdGgnIGNhc2UuCiAgICAgaWYg
KCFzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKS5pc1plcm8oKSkgewotICAgICAgICBMYXlvdXRV
bml0IG1pbkxvZ2ljYWxXaWR0aDsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2Fs
TGVmdDsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5Mb2dpY2FsUmlnaHQ7Ci0gICAgICAg
IExheW91dFVuaXQgbWluTG9naWNhbExlZnRQb3M7CisgICAgICAgIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyBtaW5WYWx1ZXM7CiAKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsTWluV2lkdGgoKSwgY29udGFpbmVy
QmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExl
bmd0aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNh
bFJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxv
Z2ljYWxXaWR0aCwgbWluTWFyZ2luTG9naWNhbExlZnQsIG1pbk1hcmdpbkxvZ2ljYWxSaWdodCwg
bWluTG9naWNhbExlZnRQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1pblZhbHVlcyk7CiAKLSAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpIDwgbWluTG9n
aWNhbFdpZHRoKSB7Ci0gICAgICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBtaW5NYXJnaW5Mb2dpY2Fs
TGVmdDsKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gbWluTWFyZ2luTG9n
aWNhbFJpZ2h0OwotICAgICAgICAgICAgc2V0TG9naWNhbExlZnQobWluTG9naWNhbExlZnRQb3Mp
OworICAgICAgICBpZiAoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPCBtaW5WYWx1ZXMubV9leHRl
bnQpIHsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluVmFsdWVzLm1f
ZXh0ZW50OworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IG1pblZhbHVl
cy5tX3Bvc2l0aW9uOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3Rh
cnQgPSBtaW5WYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQ7CisgICAgICAgICAgICBjb21wdXRlZFZh
bHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5WYWx1ZXMubV9tYXJnaW5zLm1fZW5kOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRo
KCkgJiYgbG9naWNhbFdpZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRl
cnNQbHVzUGFkZGluZykgeworICAgIGlmIChzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxX
aWR0aCgpICYmIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IDwgbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcpIHsKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGhVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBMZW5ndGgobWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVkKSwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExlbmd0
aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNhbFJp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxX
aWR0aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxp
YXMsIGxvZ2ljYWxMZWZ0UmVzdWx0KTsKLSAgICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxX
aWR0aFJlc3VsdCk7Ci0gICAgICAgIHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0UmVzdWx0KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVl
cyk7CiAgICAgfQogCi0gICAgLy8gUHV0IGxvZ2ljYWxXaWR0aCgpIGludG8gY29ycmVjdCBmb3Jt
LgotICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgoKSArIGJvcmRlcnNQbHVzUGFkZGlu
Zyk7CisgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKz0gYm9yZGVyc1BsdXNQYWRkaW5nOwog
ICAgIAogICAgIC8vIEFkanVzdCBsb2dpY2FsTGVmdCBpZiB3ZSBuZWVkIHRvIGZvciB0aGUgZmxp
cHBlZCB2ZXJzaW9uIG9mIG91ciB3cml0aW5nIG1vZGUgaW4gcmVnaW9ucy4KICAgICBpZiAoaW5S
ZW5kZXJGbG93VGhyZWFkKCkgJiYgIXJlZ2lvbiAmJiBpc1dyaXRpbmdNb2RlUm9vdCgpICYmIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY29udGFpbmVyQmxvY2stPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFBvcyA9IGxvZ2lj
YWxMZWZ0KCk7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbExlZnRQb3MgPSBjb21wdXRlZFZh
bHVlcy5tX3Bvc2l0aW9uOwogICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2IgPSB0b1JlbmRl
ckJsb2NrKGNvbnRhaW5lckJsb2NrKTsKICAgICAgICAgTGF5b3V0VW5pdCBjYlBhZ2VPZmZzZXQg
PSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlIC0gbG9naWNhbFRvcCgpOwogICAgICAg
ICBSZW5kZXJSZWdpb24qIGNiUmVnaW9uID0gY2ItPnJlZ2lvbkF0QmxvY2tPZmZzZXQoY2JQYWdl
T2Zmc2V0KTsKQEAgLTI2ODUsNyArMjY3NSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAg
ICAgICAgICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gY2ItPnJlbmRlckJveFJl
Z2lvbkluZm8oY2JSZWdpb24sIGNiUGFnZU9mZnNldCk7CiAgICAgICAgICAgICBpZiAoYm94SW5m
bykgewogICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0UG9zICs9IGJveEluZm8tPmxvZ2ljYWxM
ZWZ0KCk7Ci0gICAgICAgICAgICAgICAgc2V0TG9naWNhbExlZnQobG9naWNhbExlZnRQb3MpOwor
ICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsTGVmdFBv
czsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI3MDUsNyArMjY5NSw3IEBA
IHN0YXRpYyB2b2lkIGNvbXB1dGVMb2dpY2FsTGVmdFBvc2l0aW9uZWRPZmZzZXQoTGF5b3V0VW5p
dCYgbG9naWNhbExlZnRQb3MsIGNvbnN0CiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndGggbG9naWNh
bFdpZHRoLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHRE
aXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGgs
IExheW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9n
aWNhbFJpZ2h0LCBMZW5ndGggbWFyZ2luTG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2Fs
UmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0JiBsb2dpY2FsV2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNh
bExlZnRWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVu
aXQmIGxvZ2ljYWxMZWZ0UG9zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVl
cykgY29uc3QKIHsKICAgICBpZiAod2lkdGhTaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxX
aWR0aC5pc0F1dG8oKSkKICAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsK
QEAgLTI3MjAsNiArMjcxMCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgYm9vbCBs
b2dpY2FsTGVmdElzQXV0byA9IGxvZ2ljYWxMZWZ0LmlzQXV0bygpOwogICAgIGJvb2wgbG9naWNh
bFJpZ2h0SXNBdXRvID0gbG9naWNhbFJpZ2h0LmlzQXV0bygpOwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7CisgICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1
ZSA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbXB1dGVkVmFsdWVzLm1f
bWFyZ2lucy5tX3N0YXJ0IDogY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kOworICAgIExh
eW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kIDogY29tcHV0ZWRW
YWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQ7CiAKICAgICBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYm
ICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKlwKQEAgLTI3MzgsOSArMjczMCw5IEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUs
IExlbmd0CiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9y
IGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAogICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVy
Vmlldyk7Ci0gICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dp
Y2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBjb21w
dXRlQ29udGVudEJveExvZ2ljYWxXaWR0aCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwogCi0gICAgICAgIGNvbnN0IExheW91
dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExl
ZnRWYWx1ZSArIGxvZ2ljYWxXaWR0aFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpICsgYm9yZGVyc1BsdXNQYWRkaW5n
KTsKKyAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZhbHVlICsgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQg
KyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVu
ZGVyVmlldykgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAgIC8vIE1hcmdpbnMgYXJl
IG5vdyB0aGUgb25seSB1bmtub3duCiAgICAgICAgIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1
dG8oKSAmJiBtYXJnaW5Mb2dpY2FsUmlnaHQuaXNBdXRvKCkpIHsKQEAgLTI4MzUsOCArMjgyNyw4
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNp
emVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgICAgICAgICBMYXlvdXRVbml0IHByZWZl
cnJlZFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRp
bmc7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZE1pbldpZHRoID0gbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CiAgICAgICAgICAgICBMYXlv
dXRVbml0IGF2YWlsYWJsZVdpZHRoID0gYXZhaWxhYmxlU3BhY2UgLSBsb2dpY2FsUmlnaHRWYWx1
ZTsKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gbWluKG1heChwcmVmZXJyZWRNaW5X
aWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7Ci0gICAgICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFdpZHRoVmFsdWUgKyBsb2dp
Y2FsUmlnaHRWYWx1ZSk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG1p
bihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lkdGgp
OworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGNvbXB1
dGVkVmFsdWVzLm1fZXh0ZW50ICsgbG9naWNhbFJpZ2h0VmFsdWUpOwogICAgICAgICB9IGVsc2Ug
aWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJp
Z2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6ICh1c2Ugc2hyaW5rLXRvLWZpdCBm
b3Igd2lkdGgsIGFuZCBubyBuZWVkIHNvbHZlIG9mIHJpZ2h0KQogICAgICAgICAgICAgbG9naWNh
bExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgsIHJlbmRlclZpZXcpOwpAQCAtMjg0NSwxOSArMjgzNywxOSBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVU
eXBlLCBMZW5ndAogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9IG1heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogICAgICAgICAgICAg
TGF5b3V0VW5pdCBwcmVmZXJyZWRNaW5XaWR0aCA9IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
IC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVX
aWR0aCA9IGF2YWlsYWJsZVNwYWNlIC0gbG9naWNhbExlZnRWYWx1ZTsKLSAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aFZhbHVlID0gbWluKG1heChwcmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lk
dGgpLCBwcmVmZXJyZWRXaWR0aCk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVu
dCA9IG1pbihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVk
V2lkdGgpOwogICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dpY2Fs
V2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVM
RSA0OiAoc29sdmUgZm9yIGxlZnQpCi0gICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNv
bXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgICAgICBsb2dpY2Fs
TGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFdpZHRoVmFsdWUgKyB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykp
OworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBjb21wdXRlQ29udGVudEJv
eExvZ2ljYWxXaWR0aCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2
YWlsYWJsZVNwYWNlIC0gKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ICsgdmFsdWVGb3JMZW5ndGgo
bG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKICAgICAg
ICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYm
ICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIGZv
ciB3aWR0aCkKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChs
b2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAg
ICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1
ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBy
ZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGF2YWls
YWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmln
aHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwogICAgICAgICB9IGVsc2Ug
aWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmIGxvZ2ljYWxS
aWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAobm8gbmVlZCBzb2x2ZSBmb3Ig
cmlnaHQpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAg
ICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3
KSk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGNvbXB1dGVDb250ZW50
Qm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4NzIsMTMg
KzI4NjQsMTMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
VXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwgTGVuZ3QKICAgICAgICAgSW5saW5lRmxvd0Jv
eCogZmlyc3RMaW5lID0gZmxvdy0+Zmlyc3RMaW5lQm94KCk7CiAgICAgICAgIElubGluZUZsb3dC
b3gqIGxhc3RMaW5lID0gZmxvdy0+bGFzdExpbmVCb3goKTsKICAgICAgICAgaWYgKGZpcnN0TGlu
ZSAmJiBsYXN0TGluZSAmJiBmaXJzdExpbmUgIT0gbGFzdExpbmUpIHsKLSAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0UG9zID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUg
KyBsYXN0TGluZS0+Ym9yZGVyTG9naWNhbExlZnQoKSArIChsYXN0TGluZS0+bG9naWNhbExlZnQo
KSAtIGZpcnN0TGluZS0+bG9naWNhbExlZnQoKSk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVl
cy5tX3Bvc2l0aW9uID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUg
KyBsYXN0TGluZS0+Ym9yZGVyTG9naWNhbExlZnQoKSArIChsYXN0TGluZS0+bG9naWNhbExlZnQo
KSAtIGZpcnN0TGluZS0+bG9naWNhbExlZnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBsb2dpY2FsTGVmdFBvcyA9IGxvZ2ljYWxMZWZ0VmFsdWUgKyBt
YXJnaW5Mb2dpY2FsTGVmdFZhbHVlOwotICAgIGNvbXB1dGVMb2dpY2FsTGVmdFBvc2l0aW9uZWRP
ZmZzZXQobG9naWNhbExlZnRQb3MsIHRoaXMsIGxvZ2ljYWxXaWR0aFZhbHVlLCBjb250YWluZXJC
bG9jaywgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICBjb21wdXRlZFZhbHVlcy5tX3Bvc2l0
aW9uID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWU7CisgICAgY29t
cHV0ZUxvZ2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9u
LCB0aGlzLCBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVCbG9ja1N0YXRpY0Rpc3Rh
bmNlKExlbmd0aCYgbG9naWNhbFRvcCwgTGVuZ3RoJiBsb2dpY2FsQm90dG9tLCBjb25zdCBSZW5k
ZXJCb3gqIGNoaWxkLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2sp
CkBAIC0zMTUwLDcgKzMxNDIsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgIGNvbXB1
dGVMb2dpY2FsVG9wUG9zaXRpb25lZE9mZnNldChjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uLCB0
aGlzLCBsb2dpY2FsSGVpZ2h0VmFsdWUsIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoUmVwbGFjZWQoKQordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykg
Y29uc3QKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGJhc2VkIG9mZiBvZiB0aGUgVzNDIFdv
cmtpbmcgRHJhZnQgZnJvbSBBcHJpbCAxMSwgMjAwNiBvZgogICAgIC8vIENTUyAyLjE6IFNlY3Rp
b24gMTAuMy44ICJBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRzIgpAQCAt
MzE3NCw4ICszMTY2LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bFdpZHRoUmVwbGFjZWQoKQogICAgIExlbmd0aCBsb2dpY2FsUmlnaHQgPSBzdHlsZSgpLT5sb2dp
Y2FsUmlnaHQoKTsKICAgICBMZW5ndGggbWFyZ2luTG9naWNhbExlZnQgPSBpc0hvcml6b250YWwg
PyBzdHlsZSgpLT5tYXJnaW5MZWZ0KCkgOiBzdHlsZSgpLT5tYXJnaW5Ub3AoKTsKICAgICBMZW5n
dGggbWFyZ2luTG9naWNhbFJpZ2h0ID0gaXNIb3Jpem9udGFsID8gc3R5bGUoKS0+bWFyZ2luUmln
aHQoKSA6IHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpOwotICAgIExheW91dFVuaXQmIG1hcmdpbkxv
Z2ljYWxMZWZ0QWxpYXMgPSBtX21hcmdpbkJveC5tdXRhYmxlTG9naWNhbExlZnQoc3R5bGUoKS0+
d3JpdGluZ01vZGUoKSk7Ci0gICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMg
PSBtX21hcmdpbkJveC5tdXRhYmxlTG9naWNhbFJpZ2h0KHN0eWxlKCktPndyaXRpbmdNb2RlKCkp
OworICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBzdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA6
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZDsKKyAgICBMYXlvdXRVbml0JiBtYXJnaW5M
b2dpY2FsUmlnaHRBbGlhcyA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNv
bXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA6IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5t
X3N0YXJ0OwogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICAgICogMS4gVGhlIHVzZWQgdmFs
dWUgb2YgJ3dpZHRoJyBpcyBkZXRlcm1pbmVkIGFzIGZvciBpbmxpbmUgcmVwbGFjZWQKQEAgLTMx
ODQsOSArMzE3Niw5IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxX
aWR0aFJlcGxhY2VkKCkKICAgICAvLyBOT1RFOiBUaGlzIHZhbHVlIG9mIHdpZHRoIGlzIEZJTkFM
IGluIHRoYXQgdGhlIG1pbi9tYXggd2lkdGggY2FsY3VsYXRpb25zCiAgICAgLy8gYXJlIGRlYWx0
IHdpdGggaW4gY29tcHV0ZVJlcGxhY2VkV2lkdGgoKS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3Rl
cHMgdG8gcHJvZHVjZQogICAgIC8vIGNvcnJlY3QgbWF4L21pbiBpbiB0aGUgbm9uLXJlcGxhY2Vk
IHZlcnNpb24sIGFyZSBub3QgbmVjZXNzYXJ5LgotICAgIHNldExvZ2ljYWxXaWR0aChjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSk7
CisgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGgoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKIAotICAgIGNvbnN0IExheW91
dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSBsb2dpY2FsV2lk
dGgoKTsKKyAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9n
aWNhbFdpZHRoIC0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQ7CiAKICAgICAvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKlwKICAgICAgKiAyLiBJZiBib3RoICdsZWZ0JyBhbmQgJ3JpZ2h0JyBoYXZlIHRoZSB2YWx1
ZSAnYXV0bycsIHRoZW4gaWYgJ2RpcmVjdGlvbicKQEAgLTMyODIsNyArMzI3NCw3IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKCkKICAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwogICAgICAgICAvLyBJZiB0aGUgY29udGFpbmlu
ZyBibG9jayBpcyByaWdodC10by1sZWZ0LCB0aGVuIHB1c2ggdGhlIGxlZnQgcG9zaXRpb24gYXMg
ZmFyIHRvIHRoZSByaWdodCBhcyBwb3NzaWJsZQogICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0
aW9uID09IFJUTCkgewotICAgICAgICAgICAgaW50IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNh
bFdpZHRoKCkgKyBsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyAgbWFyZ2lu
TG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzOworICAgICAgICAgICAg
aW50IHRvdGFsTG9naWNhbFdpZHRoID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2Fs
TGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyAr
IG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzOwogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtICh0b3RhbExvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxMZWZ0
VmFsdWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzMwOSwxNCArMzMwMSwxNCBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhSZXBsYWNlZCgpCiAgICAgICAg
IElubGluZUZsb3dCb3gqIGZpcnN0TGluZSA9IGZsb3ctPmZpcnN0TGluZUJveCgpOwogICAgICAg
ICBJbmxpbmVGbG93Qm94KiBsYXN0TGluZSA9IGZsb3ctPmxhc3RMaW5lQm94KCk7CiAgICAgICAg
IGlmIChmaXJzdExpbmUgJiYgbGFzdExpbmUgJiYgZmlyc3RMaW5lICE9IGxhc3RMaW5lKSB7Ci0g
ICAgICAgICAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdFZhbHVlICsgbWFyZ2luTG9naWNh
bExlZnRBbGlhcyArIGxhc3RMaW5lLT5ib3JkZXJMb2dpY2FsTGVmdCgpICsgKGxhc3RMaW5lLT5s
b2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5lLT5sb2dpY2FsTGVmdCgpKSk7CisgICAgICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2lj
YWxMZWZ0QWxpYXMgKyBsYXN0TGluZS0+Ym9yZGVyTG9naWNhbExlZnQoKSArIChsYXN0TGluZS0+
bG9naWNhbExlZnQoKSAtIGZpcnN0TGluZS0+bG9naWNhbExlZnQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0UG9z
ID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXM7Ci0gICAgY29tcHV0
ZUxvZ2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChsb2dpY2FsTGVmdFBvcywgdGhpcywgbG9naWNh
bFdpZHRoKCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgIHNl
dExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0UG9zLnJvdW5kKCkpOworICAgIGNvbXB1dGVMb2dpY2Fs
TGVmdFBvc2l0aW9uZWRPZmZzZXQobG9naWNhbExlZnRQb3MsIHRoaXMsIGNvbXB1dGVkVmFsdWVz
Lm1fZXh0ZW50LCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICBj
b21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbExlZnRQb3Mucm91bmQoKTsKIH0KIAog
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggOGI3OGE2YmY4YjNiNDg2MmJiNWU0OGNhYzNk
Mjc3ZTM0YmFmMzM5MS4uYmE5MjAzZTc3ZWEzZTI1NmQ1NjIyMzkzOTBiMWNjMGJhZmVmMjBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTYyLDcgKzU2Miw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJlaGluZFRleHQpOwogI2VuZGlmCiAK
LSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogPSAw
LCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgPSAwKTsKKyAgICB2
b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYsIFJlbmRlclJlZ2lvbiogPSAwLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UgPSAwKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29t
cHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lu
bGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKQEAgLTU5MSwxNCArNTkxLDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBl
LCBMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFp
bmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsTGVmdCwgTGVuZ3RoIGxv
Z2ljYWxSaWdodCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxMZWZ0LCBMZW5ndGggbWFyZ2luTG9naWNh
bFJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0JiBsb2dpY2FsV2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRW
YWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxv
Z2ljYWxMZWZ0UG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgTGVuZ3RoIGxvZ2ljYWxIZWln
aHQsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVy
TG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbFRvcCwgTGVu
Z3RoIGxvZ2ljYWxCb3R0b20sIExlbmd0aCBtYXJnaW5Mb2dpY2FsVG9wLCBMZW5ndGggbWFyZ2lu
TG9naWNhbEJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0OwogCiAgICAgdm9pZCBjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMmKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVw
bGFjZWQoKTsKKyAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQo
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNhbGN1bGF0ZXMgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gcHJlZmVycmVkIHdpZHRocyBm
b3IgYW4gb2JqZWN0LgogICAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCBpbiBzaHJpbmstdG8t
Zml0IGxheW91dCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKaW5kZXggY2Q4M2UzZjhmMDM2MzZhMTRlNjQ1YzEwMmRmODA4MGFlNmIyZWFhMS4uNGYyNTk0
NGE2MzgyMGIzMDNhYWI5OGZjNGQ3ZjFjMTUyZjUxZDYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yMTYsOCArMjE2LDE0IEBAIHZvaWQgUmVuZGVyVGFi
bGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogewogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQo
KTsKIAotICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoKTsKKyAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
IHsKKyAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwor
ICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChjb21wdXRlZFZhbHVlcyk7Cisg
ICAgICAgIHNldExvZ2ljYWxXaWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CisgICAgICAg
IHNldExvZ2ljYWxMZWZ0KGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24pOworICAgICAgICBzZXRN
YXJnaW5TdGFydChjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCk7CisgICAgICAgIHNl
dE1hcmdpbkVuZChjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQpOworICAgIH0KIAogICAg
IFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>