<?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>58100</bug_id>
          
          <creation_ts>2011-04-07 17:16:31 -0700</creation_ts>
          <short_desc>1px box-shadow looks ugly</short_desc>
          <delta_ts>2011-04-28 23:41:58 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59782</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>krit</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381869</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-07 17:16:31 -0700</bug_when>
    <thetext>Box-shadow with a 1px blur radius looks ugly, and rather different from a CG 1-px shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381871</commentid>
    <comment_count>1</comment_count>
      <attachid>88740</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-07 17:16:45 -0700</bug_when>
    <thetext>Created attachment 88740
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382284</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-08 09:22:17 -0700</bug_when>
    <thetext>I wonder if this is due to the fact that ShadowBlur/ContextShadow does not yet support fractional blur radii.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393700</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-27 12:02:50 -0700</bug_when>
    <thetext>I&apos;m sure it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393726</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-27 12:55:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/9076329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393796</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-27 14:06:22 -0700</bug_when>
    <thetext>The code is buggy for 1px radii. For an input of:


000 000 000 000 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 000 000 000 000 

the results are

043 070 088 079 061 
069 112 141 127 098 
096 154 194 175 135 
105 169 212 191 148 
105 169 212 191 148 
105 169 212 191 148 
096 154 194 175 135 
078 126 159 143 111 
060 098 123 111 086 

which is not symmetrical. For radii &gt;=2 this problem does not happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394138</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-04-27 20:11:20 -0700</bug_when>
    <thetext>I could compare the both shadows (ContextShadow and ShadowBlur) and the result of ContextShadow looked more sane. It also did not have big problems with 0-1px shadows. Is there a difference in the implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394493</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-28 09:53:10 -0700</bug_when>
    <thetext>Context Shadows&apos;s code gives:

Blur source:
000 000 000 000 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 255 255 255 000 
000 000 000 000 000 

Blur result:
086 111 123 098 060 
111 143 159 126 078 
135 175 194 154 096 
148 191 212 169 105 
148 191 212 169 105 
148 191 212 169 105 
135 175 194 154 096 
098 127 141 112 069 
061 079 088 070 043 

which is still incorrect, but different (not sure why).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394551</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-28 10:51:46 -0700</bug_when>
    <thetext>If I add 1px of padding so that the edge alpha is always zero, the issue goes away. I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394667</commentid>
    <comment_count>9</comment_count>
      <attachid>91539</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-28 12:45:31 -0700</bug_when>
    <thetext>Created attachment 91539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395067</commentid>
    <comment_count>10</comment_count>
      <attachid>91539</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-04-28 20:35:11 -0700</bug_when>
    <thetext>Comment on attachment 91539
Patch

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

Can you please check if the pixel results for feDropShadow changed (they should) and update them? They are located at LayoutTests/svg/filter/feDropShadow.svg and LayoutTests/dynamic-updates/

r- for the test and the and the missing result updates. The fix itself looks good to me. If I should be wrong with tests just add a comment.

&gt; LayoutTests/fast/box-shadow/single-pixel-shadow.html:15
&gt; +      -webkit-transform-origin: -1px -1px;
&gt; +      -webkit-transform: scale(20);

Do you really want a pixelation here? On SVG we try to avoid this and transform all affected objects to devicespace and apply shadows afterwards. So we always have a goof looking shadow. This definitely does not belong to this big. But if it gets changed in the future, the text would be useless. Have you checked what Firefox or Opera are doing? But I don&apos;t have an idea how to make a pixel with it. What about canvas? Is canvas using shadow? If you draw a shadow on canvas it should be pixelated on scaling, also in the future, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395076</commentid>
    <comment_count>11</comment_count>
      <attachid>91539</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-04-28 20:48:54 -0700</bug_when>
    <thetext>Comment on attachment 91539
Patch

Talked with Simon on IRC. We don&apos;t see a way to have constant results on shadows across platforms as long as not all platforms are using ShadowBlur. Even if we get resolution independent shadows, we should see if the shadow is broken, since the shadow radius gets scaled as well. Simon updates filter results on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395090</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-28 21:08:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85299</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>88740</attachid>
            <date>2011-04-07 17:16:45 -0700</date>
            <delta_ts>2011-04-07 17:16:45 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>small-shadow.html</filename>
            <type>text/html</type>
            <size>269</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KICAgIC5ib3ggewogICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgIHdpZHRo
OiAxMHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICAgICAgYm94LXNoYWRvdzog
MTBweCAxMHB4IDFweCBibGFjazsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxk
aXYgY2xhc3M9ImJveCI+CiAgPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91539</attachid>
            <date>2011-04-28 12:45:31 -0700</date>
            <delta_ts>2011-04-28 20:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58100-20110428124530.patch</filename>
            <type>text/plain</type>
            <size>25210</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUwNjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ODkwZTI0MmRjNjJmZDRmMGViMzlh
NTkwY2ExMDY1YjgyNzQ5MDVhLi5hMTVlNTQ0MDRlNDI1YWVkNzcwYWM4ZGJhZWFlZTY2MDUyOGE3
NGFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMjggIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMXB4IGJveC1zaGFkb3cgbG9va3MgdWdseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMDAKKyAgICAgICAgYW5kCisgICAg
ICAgIFNoYWRvd0JsdXIgaW5jb3JyZWN0bHkgaGFuZGxlcyB6ZXJvLXNpemVkIGJsdXIgcmFkaXVz
IGluIG9uZSBheGlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTcxMAorICAgICAgICAKKyAgICAgICAgUGl4ZWwgdGVzdCBmb3IgYSBzaW5nbGUtcGl4
ZWwgc2hhZG93LgorCisgICAgICAgICogZmFzdC9ib3gtc2hhZG93L3NpbmdsZS1waXhlbC1zaGFk
b3cuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYm94LXNoYWRvdy9z
aW5nbGUtcGl4ZWwtc2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvYm94LXNoYWRvdy9zaW5nbGUtcGl4ZWwtc2hhZG93LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisKIDIwMTEtMDQtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NDk4Ny4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYm94LXNoYWRvdy9zaW5nbGUtcGl4ZWwtc2hhZG93Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvc2luZ2xlLXBpeGVsLXNoYWRvdy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc5MmZjNTU3YTUwZDFkZWVjOWNkN2NmMzYyYjFlOTYxZTI4NjQyNjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2JveC1zaGFkb3cvc2luZ2xlLXBpeGVs
LXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
KzxoZWFkPgorICA8c3R5bGU+CisgICAgLmJveCB7CisgICAgICBoZWlnaHQ6IDRweDsKKyAgICAg
IHdpZHRoOiA0cHg7CisgICAgICBtYXJnaW46IDIwcHg7CisgICAgICBib3gtc2hhZG93OiAwIDAg
MXB4IGJsYWNrOworICAgIH0KKyAgICAKKyAgICAuc2NhbGVkIHsKKyAgICAgIC13ZWJraXQtdHJh
bnNmb3JtLW9yaWdpbjogLTFweCAtMXB4OworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxl
KDIwKTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0i
Ym94Ij48L2Rpdj4KKyAgPGRpdiBjbGFzcz0ic2NhbGVkIGJveCI+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ib3gtc2hh
ZG93L3NpbmdsZS1waXhlbC1zaGFkb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvYm94LXNoYWRvdy9zaW5nbGUtcGl4ZWwtc2hhZG93LWV4cGVjdGVkLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NTdkNDY3MWVmMzkzZTM1N2UwYmEzNTE0MTMwZmQ0NGEyMjEyNTVkCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDU4NAp6Y21lSE9jfnNLcnlHT15Gdn1IOD9ISTA9XnRKUzJB
cm0zWiUoLWZNZXJLUk9ZclJMPFc8Tl53NEg4b0Q9a19HTm0Keld+UWM9anY4Kipyaj87bkV+TDBr
Q0x9N1IycSp+TG1yQ0lMPyFEKlNiTThPKSt7MGdiO1FNe3c9WTV7Zl5MYWo+Cnp3QGY8aDFZZmFx
JX5BKml2Y2tkc1J+SEU2OCtgfndgTUJ6TDtGSWo9Xldvc2Z3c1pUQXBZIzNBLSF9KnU2I185ZQp6
RzEreS1jaH1GUkoxdERpdCpsSlVFWTFDVlA1cGgle21nY21gMkZuWFRiRyMlUiQhZ295WjVsZS1v
NSZWQmc0KnwKejRmY21YVndIWUIrN1lCPl9iPF98KEJpKjBzQ29vX1VtMlVXIVFuKmRafk1BLTMw
SXlEVDI5bGUqX1k8RykxZkRICnoqRW5sU2I+U1okLW9NI0N4TnF7LTVeO2hxYGplbVdmIXtzJFo1
PUcjZGl2SUMhKVokQiFKMHk1YjMyd2pYZmNIZQp6aXluZmtoPHQwdE5sXkspcVNmWDAlQ29gb3pY
VUcpMFpGOzdXQG9uZjc7VkM3KHwyfGtrbj9lamNXQ3VRUHEoTFcKemZ8JHlmdmgyNHQqLUlgOFpI
TTk2ejF0czV0JlVpRkxSMHc8PiFEbFFURjxFdGpsNyRnTlZSZjgjWGhjOXxIPGFyCnppNEYwIz03
I09LTHl1ZjNuPiVlVSpqcnhiTTdUaDZzYUxMM2IoV2tCSj01fCtxdFE5LVp2QVVrPkZIYSFQVGNS
KQp6OHVNbmNQRX5gQEMrblhxKD1MUFVlez9tVWxpVXFeZjlqdCpeazxpQio4T05jSjlsemI/Vjky
X15DJG04WGRFKVEKemVLZXhpWHZLNzl4ektJcSExP2VyJVU2RDw1fEFHRCZlVmdVYjlJLSQjY1pL
IVJsSlhKSk1zQElSViFleVloWT8kCnpwS2BefC18SC0ydnBqbyt7Yjd4TER5SzNaOUphaz15fmYw
Pkc3YDQyXnQtaGdhaSZxNTBfKUc2e2BIfDwrXiY5YAp6KzlQKWN0VkxUbEx8b3JudCRKPDJQUER6
XnJTbTlpelJsfndKMiYzLXZZaE8/bmMrUnBOMyUkNGJnNyokTXYjWW0Kejsle19DWFNsPWhfZmhE
RT8xP3E3MzNxfUN7ayhiVkd2b3Vvdj8xY2dZcj9rVmU/MT5MIyU0TlJqUGZ3QzckT0dhCnpfU24y
UD5NKk1BTDYjKzV2MmU+RjFQQkF8MSswPlc0RW5Lb1hDS2I9TElDQk5AQjN7Z1RjWkREdFdQMzVI
PTRmbwp6JmFyZ2FgOyNIOXMoQ2pxWkY/SiUmZm5DMUA/PkBjJEppVUA4UVp1WXgxNGsyeTd1ZTBO
MFdIQ0MpQHFaQDxgdUAKekBsJEU3MyMmaXl7JHZvaERqTnE2enNSWiFhZ0NWTHhhRDZNaVkhLU5P
QDQjPFIxK0ZoZlZFc3VJY3tEMEx6Izs/CnpRTktaSFVHIXpOPyNGR0pvcD9PTyVIe0c3Vm4qSEF0
SjV5ODU3WUwjeEtLQSF7VCtYKCR+dHk+RWMjdG1yJXZkKQp6VFVOakRvKXNQTiYpYD1+dVk0ZVU7
NChqZC09IURwdzVCSkt6ej1JfjVia1NeeV47aWg9dENUU3dMMlFDRyYjX0EKenQtb2RFd30pTmdH
eDV+SGBNbk03Kzh+RGRiYkhYdy09Sm1kVDZPTWpOcWZLN1lXUTVvbjV1VTc0Y2xHZUg9cDxLCnp1
VT9xI3RmKDtYUUJsPjx3QHJYM0RUN311P1NfbEFwaWtrbFB4Tmh2X3VFM0lqZz4hdHxLLTZWSEM2
cWhCTGFRTgp6OCgme2woR1kqWF8mZk04SlVhbXJ4dSNsdSF7V21Gd3FUS3xGUHI+N1VCbnRUblNt
QUYjMGtkezdVQmlMa2hwMzcKejlhK1N3YTI5Y0UkcFpeV0klO2wqVCprMTsmMHxVKnJmXzBHU290
aGJ5aWYkMFMtVWIhbm93MSppc29YKzJRd2NFCnpraCZDM29yenJmc1Q7IXNBdGM+aD8hU0RrOGMx
an1QYz9VcUV6PzNUMV80TExAVFQpK3NaSmMldTtmX2liMXR5Pwp6Nmdie3s2I2tLRkhAMDIyaztk
RyQ9MXltRlFgMjc9eVhBSUsqYD95LWVaRCY0MzBsNmNCeFU2bnFsMD9fb1RPVjEKenpnSk83eUhm
QShscXViXmQzMzMmSnxTKUAqR2pyeDt1UzNvVE8kX1U+WGEtNmdyRD5peWpZRCR4KHI0fVBQUCF6
CnpCVHhFOEhSK35hPHA0P35VVkUwLVNFIzlLSmhEXyRgdFV3OU9LWGMxVWc3X1QxTUJGcD0xP21U
dT0hOF9KZWBETgp6N3ZgcVZFUjF5KShNWld2V3h1cmFsSWVxdWFxYztea2dLajhCNkM3UzRhUGA3
Xn4kNG03Q0RwbzMoUVE0SjB7dmsKelRSaHZ6aEBZRzJ0O3p7MTQpR310NU5DSC0oeDMhazViT0Rz
KXp6ZWQ5IXBNdlp6e2JLcntsQHN1c2RNWHpwdSNaCnp1QHdOTzcmZkR8ait2fHBOcUomTll7U3wj
OTN9UEBAZj5YZylQT3RBSEpJYCNjTUxPaVYkY3tZUWAkaXZjZjx8NQp6cFM7Sm01NUwjcDFoTCMq
KThTOW5fMGZEM2Q5flleR2w0KmtXclBzTjE+RnMrV2ZlQTdpeD5TVmJjYCNKNiQrNHQKekkpRE9C
PExgZkRIQ0J5cFkjd3ViemBzVFc9a0lLZkVHaSlGY3Z2RCMhNT1LbCpSNGtJWEYqPFllOW83MlAr
S3xKCnpAdTxJXlpGOVdNKz9pNm81a3gxTHghMldNeigzWWxVTzQ1Pj1HNF9BRDI0RT1zVlBhdngq
S0p2S0IlMFphTHwtNAp6ITshfUUpc2BHSmQoNmxuKiZDIzt1Rm0/RFclbD9gV2w/XkpQN1dIfjw7
OD59aUBVSz9MdUIkaW8/TD99JW56YVAKenB1SihmYWtDZTE7ZDxVXlVGaX5OQ0N4Z053SHFSUGQl
VyZmPTViNXMoSHZoZmo3PHx5NV96O2dWYE9LOUV7aiMzCno+MyNCdHY7PmdFeEYwbFpTPXpfcldj
WEtzRjNZVmA4RTNiT2FNJTYhXiE1YXxmT1lZPEl1eT80VXdlJmRXQUEyMwp6YWxzVXhCcHNhYjVq
Ml5AYmoqenUmOE1SPGB8KkVfPUpGWF88TitkLXUtUVpTRWBJLXpGfHdCb0V1Z1pxeiVoQz8KenJN
KXN8cXZVTGhiJXRNKzMqfWclRD4wJFZmLSNTOEVaO0JeOUFxPzk0dDViKCV4TVJCdyRoaDswRlgz
b3VjNDx2CnpIO1VDaV9IdW96YUt6R1NkTVBhR2c9O2RsSioldy14YHpXTEt6bjx6N19YYEVSa2d1
RTwtQjVeRnpWPHlhXlJqYAp6eihGWkQreXJUT1lvMDd1Z2glZTZiJHc5ZzJHWSo4eX0yeTZOdXxg
ZGA9dXBxX3JvMU9GX0dFPElZSzR8QDc/WHkKekdJailNTWdPaGI4MjBMNlpfbVR4QX49TnUxJVQp
I0lRWEErNnxZMXlkd1Vwbl5NeWYxakp9UjRKeSR7M18mbDNvCno7YUZhWXF4azJCUHpzJT0oJE9g
LWNXZEhTTil3VylWeSU/cl9nVzY1NH4pV0BUNTBJcHBRQGRJb1QwPmROMztsKwp6eWJse3tZTWxS
JCt+Sj1xNmctM0BRQlJIdGoqKituQkFEPmohSElAQm17NHRSMzswa2sxTm93Yz8oKCY5JVY3YGkK
ejhSJkRNSGk2YFpyZ09wVnd8SU0pOFEyO2JFO2JDUyo+NEojJnFvWiUkNnlqaFJ2amhmbTZqTWFI
QHJpKW54QjskCnplendjMjwlRm48UUYqWTA/bkIwVWY5NDcyKU5Ec2tgM05ZUDheQCp9M0pJKz5j
TEkmPHJBSE4lUVF1UytkMkcycwp6RXBATDV6MH0qMikwTFZzPjNHYChIJFVVd3J7ZT5eVXh9Tntn
PF8wRzs8MXlVeGQhRH1CRTZZRzRvQHY8TGtjYXYKelN6OUthUFE/WlBoNUV8fEozbVVPNGpPOHo0
S2xkOWE8U2M7RktBa3RDdjw4M0U+aFZ2QjA5USQ9dCtSNWhjLWhFCnpQN3lMLTteTTFSSiZtblR0
dHQwKms8P01sQmNQPDdOVU9WLXpqd0FoJj80UCYqaWprIyZDS1RZUUYxTk8xQlF3RAp6ZnZkN1Vt
UHt1dzJMcUZ3QHZoeFR7PCghUGo4UyFWVGs3TWdOdSlXSzReNW56eE8+OGJReTYqei1PWmNnZVI2
Q3EKem02cTFwMlZoQCFzeGY5JVJzcDlrRVB4eSZaPERZOUtOK2tlRVZrRHBtUGM+YUpBUEB2Z3g9
Zlo1NUAzaj40ODt+CnpnaDVgTFlyMm54Kz87VzUpPUkxMkZldSN2WHFfLUg2QzIrSSUzejwrPzQ4
KDJJTFJzOHQ8NVg2KjJiTVpkJD9rIwp6YXFBUz4+RWBrZ1pANkU3TlkoNmlUQSVTcUtSRnZUX1M4
T1Uhd2xQbDx1fFRFJUhtYit6dFVYbll8QzhCNiYqcVcKemY+P0RYY2haYXlIYUBqKUd+Rng7cnUq
YDBia142VzZQSWluUih0Vkhvd24yT1FhQ2tORkhfYTBWbFI4XkVtalQhCno5dCZxYC1taGFCODxy
aWdwPHhkcXFQeGV7VSRBZEc2KXNPYlNSY35UJU40dn43JWB2Wj9PMSVMU3pZVXMlN0BFdQp6MVNl
JnNOXzhJWTAkMn07NlN2cmlOen52Z0Z1KWAlcEAzSVNEKGp2YnNFP19oPTZ8RT9BTiElLWxNVy0l
N15ZYjYKeiNFREJ9UWJsZFhjZTNOTFJBWkdSbXB0Pjd0KmdSdjF7d2g3bkozPlI4em04WXVzUjcm
e2B+fGN8Nkc2ZnMzdlZPCnprMVRHcTVraX50JTt2VHZub2d2Xmd0S0RuS0FjeTYxWSRRSzArRH0x
eiYmSmVHR0tBLU03WTd7SWUzUD5CKlk7Zwp6Y2Fyem9yZnlHNz58PDh6aFAhVWtrUHc/QzR+NHhI
U2Q1fTcoP2p3aW41ZitAJFlMQF5QJX04I0Z4WV5+eEhURUcKel4haDBhTzZuezIjZSUqcT52U3Bw
O3l6PHVTJk4qTS1sOWJRUGJ7T0thNmNvXlVSdnZmPUZmSFRYejMme3tjPU97Cnp7Nk9NS0pEISky
cHlmUURBKX5fKkVEQnBrPVREKWheM21LMTU1KDxtcDFCTihlfThNT0dgNk5pOG49cFNmMmptMQp6
RUZUQiNhQmZLVlBRYyhabGwoVmMtSGxEb0hAIzkxM2NMVigzXj55fk9sNSh6empSOXo0RD9ldT9l
KEZIU3lFRGwKejBqKWwtXmJ2WVpoOWNpcG1RaVlNaDY3YDVGPD4lOzBAZFAjSmJ+dk41OUBEPDh1
QzhCaVhDaHE9Jkc2Jmd5YSUqCnpyNGRubzAmd0lFZGI7bklvX1k4JnVueWBoeXliZT9jMnRRQm9O
QTJubSVnWj9vMHxaYzg0Z1gtbEtGQDVNckNFaQp6VnZCWUEte2owMSMhaykkNDBsS0xAK1opOygy
P0xHNSlwZVhAQkxnTyYyLUAhbEcqRlRFMTs1akAkMkE9YnFnME4Keml+Yn53O3dGfkxuJHI0NUZ1
NU4wRkV4PDRrWVdDfXolb1A7Y0Q2LVZtWjFVS3l6cmhubHckK3EwdWAzZzxLMi1kCnpzMll2flcm
dU4tKnQlSCQjTWJRcUIpKk84QCpFbDMpUFozRU82e28jJFgjMDc+cDdyPVltd1VWM3YodDw0VEBu
bgp6KGZtMlZUcn5WYm5DOH19dFZ9X0FoPFRlTz9XfmNyYkpMajBncGBGcGVGVEZaYip7R21UTnpp
K01GMD9gUmBGaVMKektgcFBEVlNkUUszdkQ8dT03XzNYQz0lYlphenYlanE0OUkhYXJnP0sjeVh2
fkBrQ3FncnVnfDg/cjxeXlFJWnh4Cno0Zz5Re3o9PiQmJD5EUjhnZjxTcHh2JnFNVE1kdmpmdTNV
WXMtTFFNZVZWIShIO0Z+P1VVSD5SJEtGPmlgWXclKwp6VWpXKkB3cjQmOW01KUJVZXh2e3ZEXlR3
ZyZsYlQzeEYmTkAzOFJyTCExVk9xJCNTK2RaNUxHfD16JFptUyNlVkgKeik3bXRMN1ZBWmwyS2dI
WSRKPD9lTnA/RWJnVVVybGs0cnw2b2o4NVdVXldpYSNrIU9AQypWem00Uko/ZGZRZzRUCno5bGoq
Z1ReTmlrWjk9cE5lWW4jV2NeNzVPdDl3Smo0JFNFSzxCUm5JP0JGS2h7aXRGJSV0K2l2NSpmejk9
JmhQUQp6dFJsaWM+MVMmeG1OY3hvcG5yNmBDMzVrTiNHUWJzdFh5ZFVHNkAjQDBtUWpjeXQ7VypS
dkpzITtqWWNjdE5WK0wKelgrUXxwZU0rdiVxeDBZMStXRU1BdGcxZ1hzNGt+YGFqMW9CMThNS29m
e0RiLSZSUEQ7PVY1ZW88bTFjenhhQFRDCnpMYTR+S3FBLWAjZ3M0Q34mem48UGVkTi1CKiteJihE
UnxycnNTWlh5WX1obkAoXy1lRHpmfVdNJGoranpTZi1tRgp6b2RmV0dKOVUjU1E+eCoxJTA8U0hu
VHt5RjwoVShxSCRvQEA8Ui1Jd3NtU30yd1FBUS0jVXZ3WngoeX1HKVU8QSMKeio4WEhyOGVPVWI4
MHhMKFlRMkEyK3pedGV3P20+aWA5Q3pgTW51eWl0dlBNdHpPYXJlb1grZ1JkfnVRSkxSaENUCnpL
MytTekhDYlR1M2RySU4+bEllbl5+OWFzSHhgPkAqYU0pT2d4QG9eZHl4YFVSSnteX1EmekhneGxR
Z0FLUDArUgp6T31hSVN0QnJtN2B+MWdfQXZ8dE9Vc2wlKDwrWFg/Zm93ejg/JE01fllEUzE9Mm5H
X1krcHRGNDJvQHUoVHpAd3AKejVxST5LVDtSe3UrKXxSb3krO0NFbTZTYjxQWGwyJUFQZnlFNWFj
RXMoSWw8YlZubytUKH5zfWZCNV9iUVR1UDNHCnojWXBoQEF0bz5yezZ+WGZqV2NpenJ8cHNXMj1R
aUckUnEqSG9vZH07SVpJTVcmS0Fyd2goVDR7elctOFM+T0J7Iwp6Kl45emk7K0YjcGlOdWh6e3s3
OzY8QDVYazNtY31lSzR2TnFTJiEyemYpZ0RyaSVCcj9kYEM2dm51aEJMa2kyRGwKemRNTl9sQjFD
S0hSK2U+cTdSUXFEOGo3SEx2UGk1eGlPVXN1Sj1xVD5yJWU5NDAxTEJDSXI+QCNSe2R+ZWZZIXpi
CnpmZD59WjVadHo7T0MwUD57cU1XOGM4cmNXPTkqRm8zJHRqVytqd31sPUl0Rzh2LSRvZ19vO009
dEBVTjIwMVpsIwp6ZkY/PkQ5QzdXMXJ1KjkqRD9tXyhCI05FQ2p1SXRVTHhtMCliN3Q+aCQydTlO
P0ZfMktSPkBofWJyTiptSWkwZHQKemB2aFBuU0FKJjVvY3lxXkBqIWBKbzAmeDgtbG1+ekZ5IzBr
MVFOeVotTnxhREMrIUREenReb0kqTzZPNkB+UGw/CnpSPlpxOytFNSZsUzNwZlEwdEQ0aip1JnNJ
TTRmKDxEcnd3Y0JIKz0haXEhRSZJYWp8Q05hKzd6S0tPNU1IdlA1RAp6QWpYV35mblUpck5Vb3ds
dDAmdjtuNmZaQytmIWVVWEopcy1JOEMzZ0YyMV9pT2o4IXN0KnQwZjZodEBAI1ltMUwKemdBME4y
N2ckaUlUdnU/cnooRyVyJG1zNkJtQnVVfHlDKENGOG1ocG4+MTs9NWEtVDYkeE9UeGg/Xz13a1Ru
YDxaCnpwaTYtNj9vOD5jckE3dTUkMXgoQGhqdVomcz5ITTBrZHxGKXB2VVBJcUZwO2B4UUBnRVFV
TmYhSXl0QG8hb0EjJQp6ZGteSzM1VmpKP1UoZGZMOU9XUk9yPlM4cChqWj10Tys8fTMmfjFkMS1L
UDBGKmpZfDl6YV9jU1N3YCNZWHAjI1AKelZ0VjBUajFlUEVGTj16dWtCRiU7Mk9Vc0I4WX17aDV0
LWpASm1UZG5GfDVRayRwc0xNUTl4cTRRcmArakdiYSMyCnpZP3g4Q2gtNUFzOXtOODZKZWE9Qmxv
NkJkTiQqODFaV21MMjdkTWhgdXZ8ejM1Y2c/X2piTnw5aE9sM21WOHBYKwp6SEMpT2dvQitXJUVX
UUp1MXBifEA9USU9Z3d8TWMwKmYhLUkjO3NyajxeeyRRK2h8Xm5WWVBGRkxBZyoraWBnPHMKem9O
XkFAUVdJcHV7YG9wN0Q8fj1SSHN+a3hGRHR6KDx2YlBEYiFya0BQa2M2STdfci1mZHRGIXgkQlNu
UlZhMGtuCnphYl5UekRNRXleb3E1WDZiYCpZbVJ9JDlMYlNCOSk0XkFIWmFveSp5I35aNTdmZFdh
c0VGZXVGVERqfkpvfTlXKQp6UU9PdGE7Z2R4TD1kQmpVajNrKWdXeWpBfjg8eG5kaipAYWcwPnQj
flJfU0c7aFctT1h7ZTw4dk9zVFgxJkFlNFYKekE9enhIVDxGMlRHdHFBSTx2OEdIYUVyQ15zezk9
fDRVal8zSio/YlkkPjA8RjBAPU1yTFVUPDVxKjQqaW0hNDUlCnpNfXx9ZGNCSHApYGlqbnkyeztB
cyRqdyY7REAjWC1WckkhbjRhRyM0YGhZSjJMK2tIbk8lVFljaTwxOGZwd0s+Xwp6bGNOd0QzYjcl
djB9Ml94TlNxM2pCYUB0cGFrX3tLSyRlUGVgZnVZQEYrdnExUkJfa3kpcTV5THNLU3ZkaEpAbCQK
el9jSStSdH1TSTZRZ0xtbXhWQlhNVzBGRUVFM35wZ0RAKFFWZzhIJm8pTCVjYT18PHBCODZnaClv
UEk2Ozw+ZE1RCkUwNUVHKTFPTmE0CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9ib3gtc2hhZG93L3NpbmdsZS1waXhlbC1z
aGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYm94LXNo
YWRvdy9zaW5nbGUtcGl4ZWwtc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDIzMWU5
OGM3OGQwNThjYWU4YjNiNjc4MDYyOWMwMTRjNWNmMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYm94LXNoYWRvdy9zaW5nbGUtcGl4ZWwtc2hhZG93
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDY4CisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsMjApIHNpemUgNzg0eDI4CisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMjAsMCkgc2l6ZSA0eDQKK2xheWVyIGF0ICgyOCw0NCkgc2l6ZSA0eDQKKyAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDIwLDI0KSBzaXplIDR4NApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDllZWYw
MWZiMWRiNGYzZGI2ZGQxZGZmMmUyYzhjMjBjMWFmNjVkMjUuLmE0OWMyMTAyZGY2MGU5Y2Y4ZGYz
NmY0Njk0OTE5ZTE2ZmM0MjBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMS0w
NC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxcHggYm94LXNoYWRvdyBsb29r
cyB1Z2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
ODEwMAorICAgICAgICBhbmQKKyAgICAgICAgU2hhZG93Qmx1ciBpbmNvcnJlY3RseSBoYW5kbGVz
IHplcm8tc2l6ZWQgYmx1ciByYWRpdXMgaW4gb25lIGF4aXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzEwCisgICAgICAgIAorICAgICAgICBibHVy
TGF5ZXJJbWFnZSgpIGhhcyBpc3N1ZXMgYXQgdGhlIGVkZ2VzIGlmIHRoZSBibHVyIHJhZGl1cwor
ICAgICAgICBpcyBvbmUsIHNvIGluIHRoYXQgY2FzZSBidW1wIHRoZSBidWZmZXIgc2l6ZSBvdXQg
YnkgYSBwaXhlbC4KKyAgICAgICAgVGhpcyByZXN1bHRzIGluIGEgY29ycmVjdCwgc3ltbWV0cmlj
YWwgYmx1ci4KKyAgICAgICAgCisgICAgICAgIEFsc28gZml4IGFuIGlzc3VlIG5vdGljZWQgZHVy
aW5nIHRlc3Rpbmcgd2hlcmUgYSB6ZXJvCisgICAgICAgIGhlaWdodCBvciB3aWR0aCByYWRpdXMg
d291bGQgc3RpbGwgYmx1ciBvbiB0aGF0IGF4aXMsCisgICAgICAgIGJlY2F1c2Ugd2UgY2xhbXAg
dGhlIGtlcm5lbCBzaXplIHRvIGEgbWluaW11bSBvZiB0d28uCisKKyAgICAgICAgVGVzdDogZmFz
dC9ib3gtc2hhZG93L3NpbmdsZS1waXhlbC1zaGFkb3cuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1ckxheWVySW1h
Z2UpOgorICAgICAgICBTa2lwIGhvcml6b250YWwgb3IgdmVydGlhbCBwYXNzZXMgaWYgdGhlIHJh
ZGl1cyBvbiB0aGF0IGF4aXMgaXMgemVyby4KKyAgICAgICAgTW92ZSB0aGUgImlmIChwYXNzICYm
IG1fYmx1clJhZGl1cy53aWR0aCgpICE9IG1fYmx1clJhZGl1cy5oZWlnaHQoKSkiCisgICAgICAg
IGNsYXVzZSB0byB0aGUgZW5kIG9mIHRoZSBsb29wLCBzaW5jZSBpdCBvbmx5IG5lZWRzIHRvIGV4
ZWN1dGUgb25jZQorICAgICAgICBhZnRlciB0aGUgZmlyc3QgcGFzcy4gICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1cnJlZEVkZ2VTaXplKToKKyAgICAgICAgTmV3IG1l
dGhvZCB0byBjb21wdXRlIHRoZSB3aWR0aCBvZiB0aGUgYmx1cnJlZCBlZGdlIChyYWRpdXMgKyBl
eHRyYQorICAgICAgICBwaXhlbCB3aGVuIG5lY2Vzc2FyeSkuCisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0lu
c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
d1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBp
ZWNlcyk6CisgICAgICAgIFVzZSB0aGUgcmVzdWx0IG9mIGJsdXJyZWRFZGdlU2l6ZSgpIHJhdGhl
ciB0aGFuIHJlY29tcHV0aW5nLgorCiAyMDExLTA0LTI3ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxv
Y2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggOGI1
YzdmNmVlMzNjYmY2MGY4YjFiMzk0ZWQ2YzhhNzIwNDUxNmM2My4uMDhkNDBlZjYxYmM0OGFjYjhj
Mzg5OWM0MjE4MDI4YzA4MzZkNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTI1Miw5ICsyNTIsMTAgQEAgdm9pZCBTaGFkb3dC
bHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNp
emUmIHNpemUsIGkKIAogICAgIC8vIFR3byBzdGFnZXM6IGhvcml6b250YWwgYW5kIHZlcnRpY2Fs
CiAgICAgZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyArK3Bhc3MpIHsKLSAgICAgICAgaWYg
KHBhc3MgJiYgbV9ibHVyUmFkaXVzLndpZHRoKCkgIT0gbV9ibHVyUmFkaXVzLmhlaWdodCgpKQot
ICAgICAgICAgICAgY2FsY3VsYXRlTG9iZXMobG9iZXMsIG1fYmx1clJhZGl1cy5oZWlnaHQoKSwg
bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
cyA9IGltYWdlRGF0YTsKKyAgICAgICAgCisgICAgICAgIGlmICghcGFzcyAmJiAhbV9ibHVyUmFk
aXVzLndpZHRoKCkpCisgICAgICAgICAgICBmaW5hbCA9IDA7IC8vIERvIG5vIHdvcmsgaWYgaG9y
aXpvbmFsIGJsdXIgaXMgemVyby4KIAogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGZpbmFs
OyArK2osIHBpeGVscyArPSBkZWx0YSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2ggc3RlcCwg
d2UgYmx1ciB0aGUgYWxwaGEgaW4gYSBjaGFubmVsIGFuZCBzdG9yZSB0aGUgcmVzdWx0CkBAIC0z
MDksNiArMzEwLDEyIEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQg
Y2hhciogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBpCiAgICAgICAgIGRlbHRhID0g
NDsKICAgICAgICAgZmluYWwgPSBzaXplLndpZHRoKCk7CiAgICAgICAgIGRpbSA9IHNpemUuaGVp
Z2h0KCk7CisKKyAgICAgICAgaWYgKCFtX2JsdXJSYWRpdXMuaGVpZ2h0KCkpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBpZiAobV9ibHVyUmFkaXVzLndpZHRoKCkgIT0gbV9ibHVyUmFk
aXVzLmhlaWdodCgpKQorICAgICAgICAgICAgY2FsY3VsYXRlTG9iZXMobG9iZXMsIG1fYmx1clJh
ZGl1cy5oZWlnaHQoKSwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgfQogfQogCkBA
IC0zNDMsOSArMzUwLDIzIEBAIHZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1clJhZGl1cyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgbV9ibHVyUmFkaXVzLnNjYWxlKDEgLyB4QXhpc1Nj
YWxlLCAxIC8geUF4aXNTY2FsZSk7CiB9CiAKK0ludFNpemUgU2hhZG93Qmx1cjo6Ymx1cnJlZEVk
Z2VTaXplKCkgY29uc3QKK3sKKyAgICBJbnRTaXplIGVkZ2VTaXplID0gZXhwYW5kZWRJbnRTaXpl
KG1fYmx1clJhZGl1cyk7CisKKyAgICAvLyBUbyBhdm9pZCBzbG93aW5nIGRvd24gYmx1ckxheWVy
SW1hZ2UoKSBmb3IgcmFkaXVzID09IDEsIHdlIGdpdmUgaXQgdHdvIGVtcHR5IHBpeGVscyBvbiBl
YWNoIHNpZGUuCisgICAgaWYgKGVkZ2VTaXplLndpZHRoKCkgPT0gMSkKKyAgICAgICAgZWRnZVNp
emUuc2V0V2lkdGgoMik7CisKKyAgICBpZiAoZWRnZVNpemUuaGVpZ2h0KCkgPT0gMSkKKyAgICAg
ICAgZWRnZVNpemUuc2V0SGVpZ2h0KDIpOworCisgICAgcmV0dXJuIGVkZ2VTaXplOworfQorCiBJ
bnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQogewotICAgIGNvbnN0IEludFNpemUgcm91bmRlZFJhZGl1cyA9IGV4cGFu
ZGVkSW50U2l6ZShtX2JsdXJSYWRpdXMpOworICAgIEludFNpemUgZWRnZVNpemUgPSBibHVycmVk
RWRnZVNpemUoKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJs
dXJyZWQgYW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7
CkBAIC0zNjMsOSArMzg0LDkgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIC8vIFdl
IGV4cGFuZCB0aGUgYXJlYSBieSB0aGUgYmx1ciByYWRpdXMgdG8gZ2l2ZSBleHRyYSBzcGFjZSBm
b3IgdGhlIGJsdXIgdHJhbnNpdGlvbi4KICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpIHsK
LSAgICAgICAgbGF5ZXJSZWN0LmluZmxhdGVYKHJvdW5kZWRSYWRpdXMud2lkdGgoKSk7Ci0gICAg
ICAgIGxheWVyUmVjdC5pbmZsYXRlWShyb3VuZGVkUmFkaXVzLmhlaWdodCgpKTsKLSAgICAgICAg
aW5mbGF0aW9uID0gcm91bmRlZFJhZGl1czsKKyAgICAgICAgbGF5ZXJSZWN0LmluZmxhdGVYKGVk
Z2VTaXplLndpZHRoKCkpOworICAgICAgICBsYXllclJlY3QuaW5mbGF0ZVkoZWRnZVNpemUuaGVp
Z2h0KCkpOworICAgICAgICBpbmZsYXRpb24gPSBlZGdlU2l6ZTsKICAgICB9CiAKICAgICBGbG9h
dFJlY3QgdW5jbGlwcGVkTGF5ZXJSZWN0ID0gbGF5ZXJSZWN0OwpAQCAtMzc5LDggKzQwMCw4IEBA
IEludFJlY3QgU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAgICAgICAgIC8vIFBpeGVscyBhdCB0aGUgZWRnZXMg
Y2FuIGJlIGFmZmVjdGVkIGJ5IHBpeGVscyBvdXRzaWRlIHRoZSBidWZmZXIsCiAgICAgICAgIC8v
IHNvIGludGVyc2VjdCB3aXRoIHRoZSBjbGlwIGluZmxhdGVkIGJ5IHRoZSBibHVyLgogICAgICAg
ICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIGluZmxhdGVkQ2xpcC5p
bmZsYXRlWChyb3VuZGVkUmFkaXVzLndpZHRoKCkpOwotICAgICAgICAgICAgaW5mbGF0ZWRDbGlw
LmluZmxhdGVZKHJvdW5kZWRSYWRpdXMuaGVpZ2h0KCkpOworICAgICAgICAgICAgaW5mbGF0ZWRD
bGlwLmluZmxhdGVYKGVkZ2VTaXplLndpZHRoKCkpOworICAgICAgICAgICAgaW5mbGF0ZWRDbGlw
LmluZmxhdGVZKGVkZ2VTaXplLmhlaWdodCgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgbGF5ZXJSZWN0LmludGVyc2VjdChpbmZsYXRlZENsaXApOwpAQCAtNDMzLDcgKzQ1NCw3IEBA
IHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUmIHR3
aWNlUmFkaXVzLCBjb25zdCBSb3VuZGVkCiAgICAgYm90dG9tU2xpY2UgPSB0d2ljZVJhZGl1cy5o
ZWlnaHQoKSArIG1heChyYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIHJhZGlpLmJvdHRvbVJp
Z2h0KCkuaGVpZ2h0KCkpOwogfQogCi1JbnRTaXplIFNoYWRvd0JsdXI6OnRlbXBsYXRlU2l6ZShj
b25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpKSBjb25zdAorSW50U2l6ZSBTaGFkb3dC
bHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91
bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKIHsKICAgICBjb25zdCBpbnQgdGVtcGxh
dGVTaWRlTGVuZ3RoID0gMTsKIApAQCAtNDQxLDEwICs0NjIsMTEgQEAgSW50U2l6ZSBTaGFkb3dC
bHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSkgY29u
c3QKICAgICBpbnQgcmlnaHRTbGljZTsKICAgICBpbnQgdG9wU2xpY2U7CiAgICAgaW50IGJvdHRv
bVNsaWNlOwotICAgIEludFNpemUgdHdpY2VSYWRpdXMgPSBleHBhbmRlZEludFNpemUobV9ibHVy
UmFkaXVzKTsKLSAgICB0d2ljZVJhZGl1cy5zY2FsZSgyKTsKKyAgICAKKyAgICBJbnRTaXplIGJs
dXJFeHBhbnNpb24gPSByYWRpdXNQYWRkaW5nOworICAgIGJsdXJFeHBhbnNpb24uc2NhbGUoMik7
CiAKLSAgICBjb21wdXRlU2xpY2VTaXplc0Zyb21SYWRpaSh0d2ljZVJhZGl1cywgcmFkaWksIGxl
ZnRTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2UsIGJvdHRvbVNsaWNlKTsKKyAgICBjb21wdXRl
U2xpY2VTaXplc0Zyb21SYWRpaShibHVyRXhwYW5zaW9uLCByYWRpaSwgbGVmdFNsaWNlLCByaWdo
dFNsaWNlLCB0b3BTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIAogICAgIHJldHVybiBJbnRTaXpl
KHRlbXBsYXRlU2lkZUxlbmd0aCArIGxlZnRTbGljZSArIHJpZ2h0U2xpY2UsCiAgICAgICAgICAg
ICAgICAgICAgdGVtcGxhdGVTaWRlTGVuZ3RoICsgdG9wU2xpY2UgKyBib3R0b21TbGljZSk7CkBA
IC00NjUsNyArNDg3LDggQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVTaXpl
KHJhZGlpKTsKKyAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CisgICAg
SW50U2l6ZSB0ZW1wbGF0ZVNpemUgPSB0aGlzLT50ZW1wbGF0ZVNpemUoZWRnZVNpemUsIHJhZGlp
KTsKIAogICAgIGlmICh0ZW1wbGF0ZVNpemUud2lkdGgoKSA+IHNoYWRvd2VkUmVjdC53aWR0aCgp
IHx8IHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IHNoYWRvd2VkUmVjdC5oZWlnaHQoKQogICAgICAg
ICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX3Nv
dXJjZVJlY3Qud2lkdGgoKSAqIG1fc291cmNlUmVjdC5oZWlnaHQoKSkpIHsKQEAgLTQ3Myw3ICs0
OTYsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93ZWRS
ZWN0LCByYWRpaSwgdGVtcGxhdGVTaXplKTsKKyAgICBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmco
Z3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHJhZGlpLCB0ZW1wbGF0ZVNpemUsIGVkZ2VT
aXplKTsKIH0KIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiBob2xlUmFkaWkpCkBA
IC00OTEsNyArNTE0LDggQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVTaXpl
KGhvbGVSYWRpaSk7CisgICAgSW50U2l6ZSBlZGdlU2l6ZSA9IGJsdXJyZWRFZGdlU2l6ZSgpOwor
ICAgIEludFNpemUgdGVtcGxhdGVTaXplID0gdGhpcy0+dGVtcGxhdGVTaXplKGVkZ2VTaXplLCBo
b2xlUmFkaWkpOwogCiAgICAgaWYgKHRlbXBsYXRlU2l6ZS53aWR0aCgpID4gaG9sZVJlY3Qud2lk
dGgoKSB8fCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBob2xlUmVjdC5oZWlnaHQoKQogICAgICAg
ICB8fCAodGVtcGxhdGVTaXplLndpZHRoKCkgKiB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBob2xl
UmVjdC53aWR0aCgpICogaG9sZVJlY3QuaGVpZ2h0KCkpKSB7CkBAIC00OTksNyArNTIzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwg
aG9sZVJhZGlpLCB0ZW1wbGF0ZVNpemUpOworICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmco
Z3JhcGhpY3NDb250ZXh0LCByZWN0LCBob2xlUmVjdCwgaG9sZVJhZGlpLCB0ZW1wbGF0ZVNpemUs
IGVkZ2VTaXplKTsKIH0KIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpCkBAIC02MDksMjEgKzYzMywxOCBAQCB2b2lkIFNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5k
ZWRJbnRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKK3Zv
aWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRT
aXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKICAgICBn
cmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7CiAKLSAgICBjb25zdCBJbnRTaXplIHJvdW5k
ZWRSYWRpdXMgPSBleHBhbmRlZEludFNpemUobV9ibHVyUmFkaXVzKTsKLSAgICBjb25zdCBJbnRT
aXplIHR3aWNlUmFkaXVzID0gSW50U2l6ZShyb3VuZGVkUmFkaXVzLndpZHRoKCkgKiAyLCByb3Vu
ZGVkUmFkaXVzLmhlaWdodCgpICogMik7Ci0KICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAgICAgaWYgKCFt
X2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERyYXcgdGhlIHJlY3Rhbmds
ZSB3aXRoIGhvbGUuCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlQm91bmRzKDAsIDAsIHRlbXBsYXRl
U2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCB0ZW1w
bGF0ZUhvbGUgPSBGbG9hdFJlY3Qocm91bmRlZFJhZGl1cy53aWR0aCgpLCByb3VuZGVkUmFkaXVz
LmhlaWdodCgpLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHR3aWNlUmFkaXVzLndpZHRoKCksIHRl
bXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHR3aWNlUmFkaXVzLmhlaWdodCgpKTsKKyAgICBGbG9hdFJl
Y3QgdGVtcGxhdGVIb2xlID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhl
aWdodCgpLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgaWYgKCFT
Y3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5tYXRjaGVzTGFzdEluc2V0U2hhZG93KG1fYmx1clJhZGl1
cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlLCBy
YWRpaSkpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlci4K
QEAgLTY1Myw4ICs2NzQsOCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVj
dCBkZXN0SG9sZVJlY3QgPSBob2xlUmVjdDsKICAgICBkZXN0SG9sZVJlY3QubW92ZShtX29mZnNl
dCk7CiAgICAgRmxvYXRSZWN0IGRlc3RIb2xlQm91bmRzID0gZGVzdEhvbGVSZWN0OwotICAgIGRl
c3RIb2xlQm91bmRzLmluZmxhdGVYKHJvdW5kZWRSYWRpdXMud2lkdGgoKSk7Ci0gICAgZGVzdEhv
bGVCb3VuZHMuaW5mbGF0ZVkocm91bmRlZFJhZGl1cy5oZWlnaHQoKSk7CisgICAgZGVzdEhvbGVC
b3VuZHMuaW5mbGF0ZVgoZWRnZVNpemUud2lkdGgoKSk7CisgICAgZGVzdEhvbGVCb3VuZHMuaW5m
bGF0ZVkoZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gRmlsbCB0aGUgZXh0ZXJuYWwgcGFy
dCBvZiB0aGUgc2hhZG93ICh3aGljaCBtYXkgYmUgdmlzaWJsZSBiZWNhdXNlIG9mIG9mZnNldCku
CiAgICAgUGF0aCBleHRlcmlvclBhdGg7CkBAIC02NjgsMjUgKzY4OSwyMiBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbgogICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxQYXRoKGV4dGVyaW9y
UGF0aCk7CiAgICAgfQogICAgIAotICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQs
IGRlc3RIb2xlQm91bmRzLCByYWRpaSwgcm91bmRlZFJhZGl1cywgdGVtcGxhdGVTaXplLCBJbm5l
clNoYWRvdyk7CisgICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgZGVzdEhvbGVC
b3VuZHMsIHJhZGlpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CiAKICAg
ICBtX2xheWVySW1hZ2UgPSAwOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxl
U2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiByYWRpaSwg
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNo
YWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmIHJhZGlp
LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQog
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7CiAKLSAgICBjb25zdCBJ
bnRTaXplIHJvdW5kZWRSYWRpdXMgPSBleHBhbmRlZEludFNpemUobV9ibHVyUmFkaXVzKTsKLSAg
ICBjb25zdCBJbnRTaXplIHR3aWNlUmFkaXVzID0gSW50U2l6ZShyb3VuZGVkUmFkaXVzLndpZHRo
KCkgKiAyLCByb3VuZGVkUmFkaXVzLmhlaWdodCgpICogMik7Ci0KICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7
CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVj
dCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChyb3VuZGVkUmFkaXVzLndpZHRoKCksIHJvdW5k
ZWRSYWRpdXMuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gdHdpY2VSYWRpdXMud2lk
dGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gdHdpY2VSYWRpdXMuaGVpZ2h0KCkpOworICAg
IEZsb2F0UmVjdCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBl
ZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lk
dGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAog
ICAgIGlmICghU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkubWF0Y2hlc0xhc3RTaGFkb3cobV9ibHVy
UmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCByYWRpaSkpIHsK
ICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byB0aGUgSW1hZ2VCdWZmZXIuCkBAIC03MTEsMTgg
KzcyOSwxOCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogCiAgICAgRmxvYXRSZWN0IHNoYWRv
d0JvdW5kcyA9IHNoYWRvd2VkUmVjdDsKICAgICBzaGFkb3dCb3VuZHMubW92ZShtX29mZnNldC53
aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93Qm91bmRzLmluZmxhdGVYKHJv
dW5kZWRSYWRpdXMud2lkdGgoKSk7Ci0gICAgc2hhZG93Qm91bmRzLmluZmxhdGVZKHJvdW5kZWRS
YWRpdXMuaGVpZ2h0KCkpOworICAgIHNoYWRvd0JvdW5kcy5pbmZsYXRlWChlZGdlU2l6ZS53aWR0
aCgpKTsKKyAgICBzaGFkb3dCb3VuZHMuaW5mbGF0ZVkoZWRnZVNpemUuaGVpZ2h0KCkpOwogCi0g
ICAgZHJhd0xheWVyUGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCByYWRpaSwg
cm91bmRlZFJhZGl1cywgdGVtcGxhdGVTaXplLCBPdXRlclNoYWRvdyk7CisgICAgZHJhd0xheWVy
UGllY2VzKGdyYXBoaWNzQ29udGV4dCwgc2hhZG93Qm91bmRzLCByYWRpaSwgZWRnZVNpemUsIHRl
bXBsYXRlU2l6ZSwgT3V0ZXJTaGFkb3cpOwogCiAgICAgbV9sYXllckltYWdlID0gMDsKICAgICBT
Y3JhdGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQog
Ci12b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IFJvdW5kZWRJ
bnRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgUm91bmRlZEludFJlY3Q6
OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6
ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGNvbnN0
IEludFNpemUgdHdpY2VSYWRpdXMgPSBJbnRTaXplKHJvdW5kZWRSYWRpdXMud2lkdGgoKSAqIDIs
IHJvdW5kZWRSYWRpdXMuaGVpZ2h0KCkgKiAyKTsKKyAgICBjb25zdCBJbnRTaXplIHR3aWNlUmFk
aXVzID0gSW50U2l6ZShidWZmZXJQYWRkaW5nLndpZHRoKCkgKiAyLCBidWZmZXJQYWRkaW5nLmhl
aWdodCgpICogMik7CiAKICAgICBpbnQgbGVmdFNsaWNlOwogICAgIGludCByaWdodFNsaWNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDJi
YTg3ZmY4MTFjYzgxOGRhMTIyMGI3Y2I5ZDU4OTk4NjYzMWFmYzEuLjIwMmZmM2Q5MDczMzU3Mjdh
MmEzZTY3ZDg4MjFlMjJkZTM2N2VkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTY1LDE5ICs2NSwyMSBAQCBwcml2YXRlOgogICAgIH07
CiAgICAgCiAgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwotICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRp
aSYpIGNvbnN0OworICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJy
ZWRFZGdlU2l6ZSwgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJikgY29uc3Q7CiAKICAgICB2
b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBSb3VuZGVkSW50UmVjdDo6UmFkaWkmLCBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYsIGNv
bnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRv
d1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUm91
bmRlZEludFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgc2hhZG93VGVtcGxhdGVTaXplLCBj
b25zdCBJbnRTaXplJiBibHVycmVkRWRnZVNpemUpOwogCiAgICAgdm9pZCBkcmF3SW5zZXRTaGFk
b3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYgaG9sZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYsIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCk7Ci0gICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9s
ZVJlY3QsIGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRv
d1RlbXBsYXRlU2l6ZSk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaG9sZVJlY3Qs
IGNvbnN0IFJvdW5kZWRJbnRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBs
YXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKICAgICAKICAgICB2b2lk
IGRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRv
d0JvdW5kcywgY29uc3QgUm91bmRlZEludFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91
bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24p
OwogICAgIAogICAgIHZvaWQgYmx1clNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUpOwogICAgIHZvaWQgYmx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUm
IHRlbXBsYXRlU2l6ZSk7CiAgICAgCisgICAgSW50U2l6ZSBibHVycmVkRWRnZVNpemUoKSBjb25z
dDsKKyAgICAKICAgICBlbnVtIFNoYWRvd1R5cGUgewogICAgICAgICBOb1NoYWRvdywKICAgICAg
ICAgU29saWRTaGFkb3csCg==
</data>
<flag name="review"
          id="84384"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>